我的数据框有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
答案 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