从group by多列

时间:2017-09-09 20:41:42

标签: r data.table plyr

我正在处理包含X和Y列的data.table,我想创建一个新列Z,它是具有相同值(X,Y)的所有记录的数量。

我在使用data.frame时知道语法:

ddply(df,.(X,Y),nrow)

我测试了我在这个论坛上发现的不同语法,但是他们没有工作:

dt[, Z := lapply(.SD,nrow), by="X,Y"] # or   
dt[, `:=`(Z = lapply(.SD,nrow)), by="X,Y"]   

我精确的X和Y是数字。

1 个答案:

答案 0 :(得分:4)

开始
library(data.table)
dt <- data.table(X = c(1, 1, 2), Y = c(1, 1, 2))

适当的语法是

dt[, Z := .N, by = c("X","Y")]

dt[, Z := .N, by = .(X,Y)]