我试图通过分组变量将多个功能应用于多个列。我可以获得结果,但是没有有用的格式。在下面,我希望res2是by变量by“ cyl”的res1的扩展,并且与cyl的唯一值一样多。
我尝试省略unlist并重新定义my.sum.function以返回数字而不是列表。但是我无法获得所需的格式。
library(data.table)
## The well known data
data(mtcars)
DT <- data.table(mtcars)
## a custom set of summary functions
my.sum.fun = function(x){list(
mean = mean(x, na.rm=T),
median = median(x, na.rm=T),
sd = sd(x, na.rm=T)
)}
## I can summarize multiple columns. This works
res1 <- DT[,unlist(lapply(.SD,my.sum.fun)),.SDcols=c("mpg","hp")]
res1
mpg.mean mpg.median mpg.sd hp.mean hp.median hp.sd
20.090625 19.200000 6.026948 146.687500 123.000000 68.562868
## Now I add a by column. What I would like is the format as res1 but with the by …Run Code Online (Sandbox Code Playgroud)