2

次のサンプル データセットがあるとします。

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

col1byを分割して、値|が重複している別の行として入力するにはどうすればcol2よいですか? これが私が最終的に使いたいデータフレームです:

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

col2複製する必要があるのと同様の複数の列に対応できるソリューションが必要です。

4

1 に答える 1

5

文字列を分割し、長さに基づいて他の列を繰り返すだけです。

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 ] )
于 2013-09-30T22:58:00.700 に答える