我知道其他包也可以实现这个功能,但我想尝试使用 data.table
(因为它似乎是最快的分组方法)。
library(data.table)
dt = data.table(a=c(1,2,2,3))
dt[,length(a),by=a]
导致
a V1
1: 1 1
2: 2 1
3: 3 1
然而
df = data.frame(a=c(1,2,2,3))
ddply(df,.(a),summarise,V1=length(a))
产生
a V1
1 1 1
2 2 2
3 3 1
这是一个更合理的结果。只是想知道为什么data.table
没有给出相同的结果,以及如何实现相同的结果。
.N
是最好的选择。 - Matt Dowle