此问题在此处已有答案:
Summarizing multiple columns with data.table(1个答案)
Using dynamic column names in data.table
(1个答案)
昨天关门了。
我反复使用data.table命令,使用www.example.com语句将相同的函数应用于一堆列group.by,并且我无法简化/概括命令。例如,下面的“output”是正确的,但我认为应该可以编写一个更简洁的命令来实现相同的输出。“output_fail”是我尝试这样做的:
library(data.table)
df <- data.table(a = c(1, 1, 2, 2),
b = c(2, 4, 6, 6),
c = c(1, 3, 7, 10),
d = c(1, 5, 1, 5)
)
output = df[, .(b = sum(b, na.rm = TRUE),
c = sum(c, na.rm = TRUE),
d = sum(d, na.rm = TRUE)
),
by = a]
cols = c('b', 'c', 'd')
output_fail <- df[,(cols) := lapply(cols, function(x) sum(x, na.rm = TRUE))
, by = a
]
我怎样才能写一行代码,在给定“cols”的情况下更干净地生成输出?
1条答案
按热度按时间pftdvrlh1#
我们可以使用
mget
来获取cols
中的列,并对它们应用sum
函数: