scr*_*Owl 61 group-by r data.table
我正在使用该data.table
软件包来加速数据集上的一些摘要统计收集.
我很好奇是否有一种方法可以按多列分组.我的数据如下:
purchaseAmt adShown url
15.54 00001 150000001
4.82 00002 150000001
157.99 05005 776300044
... ... ...
Run Code Online (Sandbox Code Playgroud)
我可以这样做:
adShownMedian <- df1[,median(purchaseAmt),by="adShown"]
Run Code Online (Sandbox Code Playgroud)
获得每个广告的中位数.我怎么会做一些结合adShown
和url
?
我试过这个:
adShownMedian <- df1[,median(purchaseAmt),by=c("adShown","url")]
Run Code Online (Sandbox Code Playgroud)
但没有运气.
有什么建议?
Jil*_*ina 83
用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
Run Code Online (Sandbox Code Playgroud)
小智 5
要添加 Jilber Urbina 答案,并解决 kahlo 评论:
如果您想为每个 Y-Z 组合获得一行,并且可以使用聚合值
DT[, .(X=mean(X)), by=list(Y, Z)]
Run Code Online (Sandbox Code Playgroud)
这和做一样
DT[, .(X=mean(X)), by=.(Y, Z)]
# or
DT[, .(X=mean(X)), by=c('Y','Z')]
# or specify column names in vector
names = c('Y','Z')
DT[, .(X=mean(X)), by=names]
Run Code Online (Sandbox Code Playgroud)
(数据表版本 1.12.6)
归档时间: |
|
查看次数: |
78653 次 |
最近记录: |