和频数据帧我有一个data.frame,看起来像这样:R,按名称
Name freq
1 species1 4
2 species2 8
3 species1 7
4 species1 10
5 species2 9
我要总结的频率为每种名。 预期结果:
Name freq
1 species1 21
2 species2 17
和频数据帧我有一个data.frame,看起来像这样:R,按名称
Name freq
1 species1 4
2 species2 8
3 species1 7
4 species1 10
5 species2 9
我要总结的频率为每种名。 预期结果:
Name freq
1 species1 21
2 species2 17
假设你连接你的data.frame,只是这样做
tapply(freq, INDEX=list(Name),FUN=sum)
,或者对于所谓的 “数据X” 的数据帧
tapply(dataX$freq, INDEX=list(dataX$Name),FUN=sum)
为了发展plyr
替代方案:
ddply(data,~Name,summarise,freqsum=sum(freq))
这里是一个使用data.table
的解决方案。
> library(data.table)
> DT <- data.table(X)
> DT[, sum(freq), by=Name]
Name V1
1: species1 21
2: species2 17
其中X
是你原来的data.frame
如果你想标记新列,包裹在list
:
> DT[, list(fsum=sum(freq)), by=Name]
Name fsum
1: species1 21
2: species2 17
可以使用基础R功能'aggregate' ,'plyr'软件包中的'ddply'函数或我最喜欢的'data.table'。 – Justin