2016-07-06 44 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