在R中需要数据操作方面的帮助

时间:2016-07-06 05:16:08

标签: r

我的数据框有2列id,cat_list

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

2 个答案:

答案 0 :(得分: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而不是''

答案 1 :(得分: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