在同一个电话中获得.SD和每组总数的平均值?

时间:2015-10-22 20:30:50

标签: r data.table

我希望根据群组成员资格获取每个群组的行号,并使用相同的呼叫。 因此,我想修改此调用以包含.N表示法,以便为每个组创建一个新列:

d <- dt[!is.na(dt$group),  lapply(.SD, mean), by = group, .SDcols = sd.cols]

有没有办法做到这一点

这是我尝试的内容:

d <- dt[!is.na(dt$group), .(.N, lapply(.SD, mean)), by = group, .SDcols = sd.cols]

这给出了两列,N和V2,我不知道V2是什么,但肯定不是所需的sd.cols平均值。

2 个答案:

答案 0 :(得分:3)

要写出@ Arun的回答,这是有用的:

  d <- dt[!is.na(dt$group),  c(.N, lapply(.SD, mean)), by = group, .SDcols = sd.cols]

答案 1 :(得分:0)

您可能希望这样做:

iris[, c(lapply(.SD, mean), .N), by = Species]

      Species Sepal.Length Sepal.Width Petal.Length Petal.Width  N
1:     setosa        5.006        3.42        1.462       0.246 50
2: versicolor        5.936        2.74        4.260       1.326 50
3:  virginica        6.588        2.96        5.552       2.026 50