小编Joh*_*Doe的帖子

如何对by中的多个列应用多个功能?

我试图通过分组变量将多个功能应用于多个列。我可以获得结果,但是没有有用的格式。在下面,我希望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)

r data.table

5
推荐指数
1
解决办法
86
查看次数

标签 统计

data.table ×1

r ×1