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)
输出
[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
方法 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]
输出
[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
方法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)
输出
[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