2014-02-25 51 views
0

假设我有以下三列数据框。R中行数的计数

data = data.frame(id=c(1:10), interest_1=c("food","","","drugs","beer","soda","","","drugs","sports"), 
        interest_2=c("fruits","car","jeans","","","","soda","shoes","","drugs"), 
        interest_3=c("","","","","soda","sports","","","","")) 

data 

我想要得到每一行的计数。

以下事件中,食物为interest_1,fruit为interest_2,没有任何interest_3只发生一次。

id interest_1 interest_2 interest_3 
1 1  food  fruits 

以下事件中,毒品interest_1和nothing_interest_2或interest_3发生两次。

id interest_1 interest_2 interest_3 
    4  drugs      
    9  drugs 

我想要计算每个发生率的发生次数。我会如何去做这件事?

输出应为:

interest_1 interest_2 interest_3 count 
    food  fruits     1 
         car   1 
       jeans     1 
    drugs       2 

回答

6
> aggregate(id~.,data,length) 
    interest_1 interest_2 interest_3 id 
1  drugs      2 
2     car    1 
3  sports  drugs    1 
4  food  fruits    1 
5     jeans    1 
6     shoes    1 
7     soda    1 
8  beer     soda 1 
9  soda    sports 1 

基本上,这意味着:应用功能length向由id值的其他列的每个组合的载体。

2
require(plyr) 
ddply(data, .(interest_1, interest_2, interest_3), c("nrow")) 
+0

哦哇,这应该是显而易见的。谢谢! – amathew

+0

NP!我很高兴能够提供帮助。 – stanekam