这是参考 different question ,其中我的原始答案没有成功,因为它试图在LHS中使用.SD
:
library(data.table)
data.table(data)[,
paste0(names(.SD), "_tot"):=lapply(.SD, sum), by=region, .SDcols=-1
][1:2]
# biz region june july _tot
# 1: telco mideast 2 122 768
# 2: shipping mideast 29 111 768
但我真的希望这能做什么
new.names <- paste0(names(data[, -(1:2)]), "_tot")
data.table(data)[,
(new.names):=lapply(.SD, sum), by=region, .SDcols=-1
][1:2]
# biz region june july june_tot july_tot
# 1: telco mideast 2 122 768 3802
# 2: shipping mideast 29 111 768 3802
我做错了吗?或者是否有另一种方法(参见:=
的LHS中的.SD。)
编辑:更多地考虑这一点,显然.SD
无法用于LHS,因为LHS应该只有一个值,无论有多少组,而{{1更改每个组的值。它看起来似乎没有.SD
变量或其他一些在LHS中使用,但我很想知道其他人是否有更好的解决方案来避免引用原始{{1}正如我在这里构建.SDcols
。