将数据帧的行划分为多行

时间:2017-01-14 16:16:03

标签: r dplyr stringr

假设您有一个带有Id x和字符串y的数据框:

x  y
1  a-b-c
2  d-e

我想要以下数据框:

x  y
1  a
1  b
1  c
2  d
2  e

2 个答案:

答案 0 :(得分:3)

尝试使用separate_rows中的tidyr

library(tidyr)


dff <- structure(list(x = 1:2, 
               y = structure(1:2, .Label = c("a-b-c","d-e"), 
              class = "factor")), .Names = c("x", "y"), 
              class = "data.frame", row.names = c(NA,-2L))

dff %>%
    separate_rows(y)

#  x y
#1 1 a
#2 1 b
#3 1 c
#4 2 d
#5 2 e

我希望它有所帮助。

答案 1 :(得分:2)

我们可以尝试

library(splitstackshape)
cSplit(dff, "y", "-", "long")
#   x y
#1: 1 a
#2: 1 b
#3: 1 c
#4: 2 d
#5: 2 e