R data.table汇总数据

问题描述 投票:4回答:1

我曾经使用aggregate进行数据聚合,如何在data.table中进行类似的操作?

说我生成这样的数据:

data <- data.table("a"=sample(1:100, 100),
                   "b"=sample(1:100, 100),
                   "c"=sample(1:100, 100),
                   "d"=sample(1:100, 100),
                   "metric"=rnorm(100))

我曾经这样做:aggregate(metric~a+b, data=data, sum)。在data.table中执行此操作的等效方法是什么?我尝试了data[, total:=sum(metric), by=list(a,b)],但其他列均未删除。

r data.table
1个回答
6
投票

您可以过滤结果:

data[, total:=sum(metric), by=list(a,b)][, c('a','b','metric')]

获得相同结果的另一种方法(我认为它更快)是使用dcast

reshape2::dcast(data,a+b~.,fun=sum,value.var="metric")
© www.soinside.com 2019 - 2024. All rights reserved.