我正在寻找一种通过data.table进行简单聚合/计数的方法。
考虑鸢尾花数据,每个物种有50个观测结果。为了计算每个物种的观测结果数量,我必须在除"Species"以外的列上进行汇总,例如"Sepal.Length"。
library(data.table)
dt = as.data.table(iris)
dt[,length(Sepal.Length), Species]
我觉得这很令人困惑,因为乍一看好像我正在对Sepal.Length做些什么,但实际上只有Species是相关的。
这是我更喜欢说的话,但我没有得到有效的输出:
dt[,length(Species), Species]
输入输出正确,但代码笨拙:
> dt[,length(Sepal.Length), Species]
Species V1
1: setosa 50
2: versicolor 50
3: virginica 50
错误的输入输出,但代码更加清晰简洁:
> dt[,length(Species), Species]
Species V1
1: setosa 1
2: versicolor 1
3: virginica 1
.N
)进行排序?--算了,我在帮助文档中找到了解决方法:DT[,sum(v),x][order(-V1)]
。 - Gaffidt[,.N,by=Species][,prop := N/sum(N)]
足够吗? - mneldata.table
有一个魔法技巧可以阻止:=
自动打印结果(从1.8.4版本开始) - 你已经发现了强制打印的惯用方法(把代码用括号包起来)。 - mnel