R将单列拆分为多行

时间:2019-10-21 21:02:22

标签: r dataframe

在R中,我有一个这样的表格:

tab <- data.frame(col1=c('A','B','C'),
                  col2=c('after|angle|axe','boss|bike','car|cat|corn'))

  col1            col2
1    A after|angle|axe
2    B       boss|bike
3    C    car|cat|corn

我需要把它变成这样:

  col1  col2
1    A after
2    A angle
3    A   axe
4    B  boss
5    B  bike
6    C   car
7    C   cat
8    C  corn

我该怎么做?可能没有循环并且没有外部库吗?

1 个答案:

答案 0 :(得分:0)

我们可以使用strsplit中的base R

lst1 <- strsplit(as.character(tab$col2), "|", fixed = TRUE)
data.frame(col1 = rep(tab$col1, lengths(lst1)), col2 = unlist(lst1))

有了包裹,就更容易了

library(tidyr)
tab %>% 
   separate_rows(col2)