我有一个看起来像这样的data.frame:
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
答案 0 :(得分:2)
开发plyr
替代方案:
ddply(data,~Name,summarise,freqsum=sum(freq))
答案 1 :(得分:2)
这是使用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
答案 2 :(得分:1)
假设您附加了data.frame,只需执行此操作
tapply(freq, INDEX=list(Name),FUN=sum)
或者,对于名为“dataX”的数据框
tapply(dataX$freq, INDEX=list(dataX$Name),FUN=sum)