我正在处理包含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是数字。
答案 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)]