R语言 如何对Data.table的多列进行聚合

R语言 如何对Data.table的多列进行聚合

在这篇文章中,我们将讨论如何在R编程语言的Data.table中聚合多列。

Data.table包含的元素可能是重复的或唯一的。因此,变量被分为不同的类别,这取决于它们可以被隔离的集合。列的值可以被求和,这样列就包含了变量频率计数的求和。

方法1:使用list()方法

标准的数据表索引方法可以用来分离和聚集数据框架中包含的数据。”by “属性被用来根据list()方法中提供的特定列名来划分数据。可以添加一个新的变量,其中包含使用sum()方法获得的值的总和,该方法包含要进行求和的列。

语法

df[ , new-col-name:=sum(reqd-col-name), by = list(grouping columns)]

例子

# importing required libraries
library(data.table)
  
# creating a data frame
data_frame <- data.table(col1 = sample(6:8, 12 , replace = TRUE),
                         col2 = letters[1:2],
                         col3 = 1)
  
print ("Original DataFrame")
print (data_frame)
  
# compute the sum of col3 using grouping 
# of col1 and col2
data_frame[ , count:=sum(col3), by = list(col1, col2)] 
  
print ("Modified DataFrame")
print (data_frame)
Bash

输出

[1] "Original DataFrame" 
   col1 col2 col3  
1:    7    a    1  
2:    6    b    1  
3:    8    a    1  
4:    7    b    1  
5:    6    a    1  
6:    8    b    1  
7:    7    a    1  
8:    8    b    1  
9:    8    a    1 
10:   7    b    1 
11:   6    a    1 
12:   7    b    1 
[1] "Modified DataFrame" 
  col1 col2 col3 count  
1:    7    a    1   2  
2:    6    b    1   1  
3:    8    a    1   2  
4:    7    b    1   3  
5:    6    a    1   2  
6:    8    b    1   2  
7:    7    a    1   2  
8:    8    b    1   2  
9:    8    a    1   2 
10:   7    b    1   3 
11:   6    a    1   2 
12:   7    b    1   3
Bash

方法 2 : 使用 lapply( )

data.table库可以被安装并加载到工作空间。然后可以在这个 data.table 对象上应用 lapply() 方法,用一个组来聚合多个列。lapply()方法被用来返回一个与输入列表相同长度的对象。返回的每个元素都是应用函数FUN的结果。

语法。

lapply(obj, FUN, …)

参数 :

  • obj – 一个向量(原子或列表)或一个表达式对象。
  • FUN – 要在元素上应用的函数。

.SD属性用于计算更大的变量列表的汇总统计。总和函数被应用为计算分类属于每个组变量的元素的总和的函数。在执行聚合时,’by’属性等同于SQL中的’group by’。

语法

lapply ( .SD , sum )

例子

# importing required libraries
library(data.table)
  
# creating a data frame
data_frame <- data.table(col1 = sample(6:8, 12 , replace = TRUE),
                         col2 = 1:2,
                         col3 = 1)
  
print ("Original DataFrame")
print (data_frame)
  
print ("Modified DataFrame")
data_frame[, lapply(.SD, sum), by= col1]
Bash

输出

[1] "Original DataFrame"
col1 col2 col3  
1:    7    1    1  
2:    7    2    1  
3:    8    1    1  
4:    8    2    1  
5:    8    1    1  
6:    6    2    1  
7:    7    1    1  
8:    7    2    1  
9:    8    1    1 
10:    6    2    1 
11:    7    1    1 
12:    7    2    1 
[1] "Modified DataFrame" 
   col1 col2 col3 
1:    7    9    6 
2:    8    5    4 
3:    6    4    2
Bash

方法3:使用聚合方法

R中的aggregate()函数用于为数据框或data.table中的一个或多个变量分别产生汇总统计。

语法。

aggregate(sum_var ~ group_var, data = df, FUN = sum)

参数:

  • sum_var – 要计算总和的列
  • group_var – 要对数据进行分组的列
  • data – 要提取的数据框
  • FUN – 要应用的函数

如果被分组的变量是一个列的组合,cbind()方法被用来组合要检索的列。要应用的FUN等同于sum,其中每一列对特定分类组的求和被返回。

例子

# importing required libraries
library(data.table)
  
# creating a data frame
data_frame <- data.table(col1 = sample(6:8, 12 , replace = TRUE),
                         col2 = 1:2,
                         col3 = 1)
  
print ("Original DataFrame")
print (data_frame)
  
print ("Modified DataFrame")
aggregate(cbind(col2,col3) ~ col1, data = data_frame, FUN = sum)
Bash

输出

[1] "Original DataFrame"
col1 col2 col3 
1:    6    1    1  
2:    6    2    1  
3:    7    1    1  
4:    6    2    1  
5:    6    1    1  
6:    7    2    1  
7:    8    1    1  
8:    6    2    1  
9:    8    1    1 
10:    6    2    1 
11:    7    1    1 
12:    7    2   
[1] "Modified DataFrame" 
col1 col2 col3 
1    6   10    6 
2    7    6    4 
3    8    2    2
Bash

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册