我希望根据群组成员资格获取每个群组的行号,并使用相同的呼叫。 因此,我想修改此调用以包含.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
平均值。
答案 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