2013-07-01 26 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))