和頻數據幀我有一個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