通过r中的数据帧中的剩余列进行聚合

时间:2015-11-30 12:15:14

标签: r

我想知道是否有更好的方法在数据框中聚合以下系列而不必列出我的数据框X中的所有剩余列:

Date    Factor_1    Factor_2    Amount
14-Jan  A   x   270
14-Jan  A   z   303
14-Jan  A   x   547
14-Jan  A   z   285
14-Jan  B   j   800
14-Jan  B   k   697
14-Jan  B   j   380
14-Jan  B   k   694

在正常聚合中,聚合的标准方法是:

aggregate(X$Amount, by = list(X$Date, X$Factor_1, X$Factor_2), sum)

是否有办法使用不同的符号进行聚合,例如:

aggregate(X$Amount, by = list(X[,-ncol(X)]), sum)

这个想法太过于避免在大型数据框中输入所有因子,结果仍然是:

Group.1 Group.2 Group.3 Sum
14-Jan  A   x   817
14-Jan  A   z   588
14-Jan  B   j   1180
14-Jan  B   k   1391

1 个答案:

答案 0 :(得分:1)

我们可以使用aggregate的公式方法。将~的rhs上的数据集中的所有其他变量指定为.

aggregate(Amount~., df1, sum)
#    Date Factor_1 Factor_2 Amount
#1 14-Jan        B        j   1180
#2 14-Jan        B        k   1391
#3 14-Jan        A        x    817
#4 14-Jan        A        z    588

等效的dplyr方法

library(dplyr)
df1 %>%
    group_by_(.dots=names(df1)[-4]) %>%
    summarise(Amount= sum(Amount))

并且data.table方式是

 library(data.table)
 setDT(df1)[, list(Amount= sum(Amount)), by = c(names(df1)[-4])]