字符串拆分为重复的行

时间:2013-09-30 20:14:42

标签: r

给出以下样本数据集:

col1 <- c("X1","X2","X3|X4|X5","X6|X7")
col2 <- c("5","8","1","4")
dat <- data.frame(col1,col2)

如何将col1拆分为|并将其作为具有重复col2值的单独行输入?这是我想最终得到的数据框:

col1 col2
  X1    5
  X2    8
  X3    1
  X4    1
  X5    1
  X6    4
  X7    4

我需要一个可以容纳多个类似于col2的列的解决方案,这些列也需要重复。

1 个答案:

答案 0 :(得分:4)

只需拆分字符串,然后根据长度重复其他列。

y<-strsplit(as.character( dat[,1])  , "|", fixed=TRUE)
data.frame(col1= unlist(y), col2= rep(dat[,2], sapply(y, length)))
  col1 col2
1   X1    5
2   X2    8
3   X3    1
4   X4    1
5   X5    1
6   X6    4
7   X7    4

如果您需要重复除第一个

之外的许多列
data.frame(col1= unlist(y), dat[ rep(1:nrow(dat), sapply(y, length)) , -1 ] )