2013-07-01 29 views
1

二元變量我有一個數據集,看起來像這樣:結合R中

UserID Query  Asthma Stroke  
    142  abc dr 0   0 
    142  asthma 1   0 
    142  stroke 0   1 
    145  stroke 0   1 
    145  pizza  0   0 

有用戶ID數十萬,並且每個用戶提交的可變數量的查詢。爲了做進一步分析,我需要爲每個用戶ID總結「哮喘」和「中風」。有什麼建議?你能推薦處理這類數據集的資源嗎?

預先感謝您......我對此很新。

+0

'tapply'可能會做得很好。 'tapply(Asthma,INDEX = list(UserID),sum)'。如果這不是你想要的,你可能希望在你的問題中包含更多的細節。 – Jota

+1

因爲聚合的默認函數是sum,所以肯定有一個重複的和多次的聚合中的一個作爲'aggregate(dfrm [,c(「Asthma」,「Stroke」)],dfrm $ UserID)「。 –

+0

@DWin,:)。這是一個「廣泛的」副本:D – Arun

回答

2

您可以使用plyr軟件包中的ddply函數。

假設你的數據集樣本:

install.packages("plyr") 
library(plyr) 
ddply(sample,.(UserID), summarize,sumAsthma=sum(Asthma),sumStroke=sum(Stroke)) 

注意:您可以使用numcolwise(),如果你有一個以上的數字列。

ddply(sample,.(UserID),numcolwise(sum))