我正在尝试使用collapse package计算分组均值。下面是一个我正在努力实现的例子。
library(data.table)
library(collapse)
data_1 <- as.data.table(airquality)
var_means <- c(
"Ozone",
"Solar.R",
"Wind"
)
data_1[,paste0(var_means,"_mean") := lapply(.SD,mean,na.rm = TRUE),by = .(Month)]
2条答案
按热度按时间toe950271#
至少有几种方法。使用
dplyr
样式的语法:或者使用
ftransform()
:或者,如果你想传递一个列的字符向量,你需要像这样:
r1zk6ea12#
里奇的回答很好。我想补充的是,你可以在列表中传递函数给fmutate:
你也可以使用
ftransform
与复合管道和add_stub
函数:如果不需要重命名列,一个简单的方法是使用
settransformv
非常接近你对data.table所做的。这里的
apply = FALSE
确保我们使用应用于帧的整个子集的fmean.data.frame
,因此我们只需要分组一次。最后一个混合选项是
fcomputev
与add_vars<-
或ftransform<-
,后者更智能(即如果再次执行,它将替换列),但前者更快。