r - 如何按多列对data.table进行分组?

标签 r group-by data.table

我正在使用 data.table 包来加速数据集上的一些汇总统计信息收集。

我很好奇是否有一种方法可以按多列进行分组。我的数据如下所示:

  purchaseAmt        adShown        url
   15.54            00001         150000001
    4.82            00002         150000001
  157.99            05005         776300044
   ...               ...            ...

我可以做这样的事情:

adShownMedian <- df1[,median(purchaseAmt),by="adShown"]

获取每个广告的中位数。我该如何做一些结合 adShownurl 的事情?

我已经尝试过这个:

adShownMedian <- df1[,median(purchaseAmt),by=c("adShown","url")]

但运气不好。

有什么建议吗?

最佳答案

使用by=list(adShown,url)而不是by=c("adShown","url")

示例:

set.seed(007) 
DF <- data.frame(X=1:20, Y=sample(c(0,1), 20, TRUE), Z=sample(0:5, 20, TRUE))

library(data.table)
DT <- data.table(DF)
DT[, Mean:=mean(X), by=list(Y, Z)]


     X Y Z      Mean
 1:  1 1 3  1.000000
 2:  2 0 1  9.333333
 3:  3 0 5  7.400000
 4:  4 0 5  7.400000
 5:  5 0 5  7.400000
 6:  6 1 0  6.000000
 7:  7 0 3  7.000000
 8:  8 1 2 12.500000
 9:  9 0 5  7.400000
10: 10 0 2 15.000000
11: 11 0 4 14.500000
12: 12 0 1  9.333333
13: 13 1 1 13.000000
14: 14 0 1  9.333333
15: 15 0 2 15.000000
16: 16 0 5  7.400000
17: 17 1 2 12.500000
18: 18 0 4 14.500000
19: 19 1 5 19.000000
20: 20 0 2 15.000000

关于r - 如何按多列对data.table进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12478943/

相关文章:

r - 如果最大组值 > 某个值,则过滤 data.table 组中的行

r - 如何使用 R 交换 data.table 中的列值

r - R中具有相同数据的相同操作的不可预测的内存使用情况

r - dygraphs/highcharter 在两个图上突出显示 - 交互性

r - 改变方向多行文字 x 标签

python - Groupby & Sum 从某个特定值的出现到另一个特定值或相同值的出现

r - data.table 的 fread() 给出不需要的下载消息

R:按列随机排列数据帧

python - Pandas/Python 过滤 DF 的列值

mysql - 如何在mysql中使用2列进行分组