2016-01-11 44 views
-3

在數據幀的唯一行,我有以下的數據幀:如何找到R中

> mydata 

S.no ID1 ID2 

1. 234 ABC 
2. 345 ASD 
3. 789 ASE 
4. 567 ASW 
5. 567 ASQ 
6. 789 KLM 
7. 345 GHJ 

對於ID1每個獨特的價值,我想所有的值ID2上市,例如:

S.no ID1 Count ID2 

1. 234 1  ABC 
2. 345 2  ASD 
        GHJ 
3. 789 2  ASE 
        KLM 
4. 567 2  ASW 
        ASQ 

回答

1

我們可以試試data.table。將'data.frame'轉換爲'data.table'(setDT(df1),按「ID1」分組,我們得到第一個元素「S.no」,行數(.N)和paste「ID2」元素。

library(data.table) 
setDT(df1)[,list(S.no=S.no[1L], Count=.N, 
       ID2= paste(ID2, collapse=' ')) , ID1] 
# ID1 S.no Count  ID2 
#1: 234 1  1  ABC 
#2: 345 2  2 ASD GHJ 
#3: 789 3  2 ASE KLM 
#4: 567 4  2 ASW ASQ 

或者使用dplyr,我們可以用相同的方法

library(dplyr) 
df1 %>% 
    group_by(ID1) %>% 
    summarise(S.no = S.no[1L], Count=n(), ID2= paste(ID2, collapse=' '))