假设我有一个data.table如下 - :
data = data.table(c("a","a","b","b","c"),c(1,2,3,4,5))
Run Code Online (Sandbox Code Playgroud)
我想总结数值向量,只有当因子向量有多个条目时.我遇到的问题需要使用.SD.我知道我可以创建一个N场
data[ , N := .N, by = V1]
Run Code Online (Sandbox Code Playgroud)
然后总结
data[N > 1, lapply(.SD,sum), by = V1, .SDcols = 2]
Run Code Online (Sandbox Code Playgroud)
但是,有一个步骤要求这样做吗?
在通话中引用.SD不会返回答案 -
data[, lapply(.SD[which(length(.SD)>1)],sum), by = V1, .SDcols = 2]
Run Code Online (Sandbox Code Playgroud)
我想明白为什么这不起作用.也不 -
data[, lapply(.SD[which(.N>1)],sum), by = V1, .SDcols = 2]
Run Code Online (Sandbox Code Playgroud)
谢谢!
data <- data.table(c("a","a","b","b","c"),c(1,2,3,4,5))
data[, if(.N > 1) lapply(.SD, sum) else NULL, by=V1]
# V1 V2
# 1: a 3
# 2: b 7
Run Code Online (Sandbox Code Playgroud)