2016-07-06 30 views
-1

我有2列ID的數據幀,cat_list需要幫助的數據處理中的R

id cat_list 
1   A 
2  A|B 
3  E|F|G 
4   I 
5 P|R|T|Z 

我想要實現以下,使用R代碼。

id cat_list1 cat_list2 cat_list3 cat_list4 
1   A 
2   A   B 
3   E   F   G 
4   I 
5   P   R   T   Z 

回答

0

我們可以使用cSplit。在這裏,我們不必擔心分割的數量,因爲它會自動檢測它。

library(splitstackshape) 
cSplit(df1, "cat_list", "|") 
# id cat_list_1 cat_list_2 cat_list_3 cat_list_4 
#1: 1   A   NA   NA   NA 
#2: 2   A   B   NA   NA 
#3: 3   E   F   G   NA 
#4: 4   I   NA   NA   NA 
#5: 5   P   R   T   Z 

注:可能是更好的填充NA而非''

0

tidyr::separate是得心應手:

library(tidyr) 

df %>% separate(cat_list, into = paste0('cat_list', 1:4), fill = 'right') 
## id cat_list1 cat_list2 cat_list3 cat_list4 
## 1 1   A  <NA>  <NA>  <NA> 
## 2 2   A   B  <NA>  <NA> 
## 3 3   E   F   G  <NA> 
## 4 4   I  <NA>  <NA>  <NA> 
## 5 5   P   R   T   Z