【发布时间】:2019-01-29 22:14:26
【问题描述】:
问题如下:我有一个data.table,其中有A列和B列。需要汇总,其名称作为字符向量传递到变量var1中。
我已经尝试寻找答案一段时间了,请参阅例如this 和 this SO 帖子。由于找不到合适的解决方案,我不得不自己问这个问题。
现在我想做的是(使用 data.frame)
tmp[, var1] <- rep(1, nrow(tmp))
tmp <- aggregate(formula(paste(var1, "~ A + B")), tmp, sum)
但我没有用 data.table 做到这一点,我最后也是最大的努力是
tmp <- tmp[, list(..var1 = .N), by = list(A, B)]
现在,我的代码出了什么问题,我该如何解决?
请注意,我不想使用 := 运算符,因为我希望结果与来自 aggregate() 的结果完全相同。
编辑 1:一个工作示例:
library(data.table)
tmp <- data.table(A=c("R","G","G","B","B","B"), B=c(1,1,1,2,1,2))
print(tmp)
var1 <- "C"
tmp[, var1] <- rep(1, nrow(tmp))
tmp2 <- aggregate(formula(paste(var1, "~ A + B")), tmp, sum)
print(tmp2)
tmp3 <- tmp[, list(..var1 = .N), by = list(A, B)]
print(tmp3)
【问题讨论】:
-
你应该分享一个最小的reproducible example。
-
只运行
setnames(tmp[, .N, by = list(A, B)], "N", var1)就够了吗?
标签: r data.table