我非常欣赏data.table包的速度,但我还没弄清楚如何为汇总函数添加后缀 . dplyr软件包完美地开箱即用,我希望它可以在data.table中使用 . 这是一个可重复的例子 .
library(data.table)
library(datasets)
library(dplyr)
data(iris)
iris_dt = as.data.table(iris)
#Using dplyr
summary_stats <- iris %>%
group_by(Species) %>%
summarise_all(funs(mean(., na.rm = TRUE),sd(.,na.rm=TRUE)))
#Using data table
cols = sapply(iris_dt, is.numeric)
iris_dt[, lapply(.SD, mean), .SDcols = cols]
names(summary_stats)
[1] "Species" "Sepal.Length_mean" "Sepal.Width_mean" "Petal.Length_mean" "Petal.Width_mean" "Sepal.Length_sd"
[7] "Sepal.Width_sd" "Petal.Length_sd" "Petal.Width_sd"
names(iris_dt)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
如您所见,使用dplyr和多个汇总函数,会自动添加后缀 . 这对我来说非常有用,但在较大的数据集上它很慢 .
我们可以用data.table做同样的事情吗?通过不同的汇总函数汇总所有数字列,并为输出添加正确的后缀?
1 回答
扩展Frank的注释,如果可以使用前缀而不是后缀来添加列名,则可以执行以下操作:
(注意:在这种特殊情况下,由于除分组之外的所有列都是数字,因此定义
cols
并使用.SDcols
似乎是多余的) .