给出以下样本数据集:
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
的列的解决方案,这些列也需要重复。
答案 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 ] )