【发布时间】:2021-12-28 17:57:41
【问题描述】:
我正在尝试使用在data.table 中按组计算一些统计数据的函数,如下所示:
minmax <- function(vec) {
c(min(vec), max(vec))
}
library(data.table)
iris <- as.data.table(iris)
iris[, c('Min', 'Max') := minmax(Petal.Length), by = Species]
结果应该是Petal.Length 乘以Species 的最小值和最大值,并且具有与物种一样多的行。也就是和下面的代码结果一样:
merge(
iris[, .(Min = min(Petal.Length)), Species],
iris[, .(Max = max(Petal.Length)), Species],
on = 'Species'
)
Species Min Max
1: setosa 1.0 1.9
2: versicolor 3.0 5.1
3: virginica 4.5 6.9
注意:在我自己的代码中,我想一次性完成,而不是使用merge()。
【问题讨论】:
-
谢谢@Henrik,我暂时很难找到骗子(然后放弃了寻找)。
-
我不介意把这个问题当作一个骗子来结束,但我认为你的答案与原来的答案相比肯定有优点。
标签: r group-by data.table