を使用した別の基本 R ソリューションを次に示しreshape(...)
ます。
result <- reshape(df,idvar=c(1,6),times=c("Start","End"),v.names=c("X","Y"),
varying=list(c(2,4),c(3,5)),direction="long")
result
# group id time X Y
# 18878713.1.Start 18878713 1 Start 524897 180779
# 18884056.2.Start 18884056 2 Start 531199 183111
# 18878713.1.End 18878713 1 End 525352 179484
# 18884056.2.End 18884056 2 End 532538 182503
time
で列を取り除くことができます
result$time <- NULL
melt(...)
この種の問題用に設計されていない をどうしても使用したい場合は、次の方法があります。
library(reshape2)
m.1 <- melt(df,id=c(1,6),measure=c(2,4),value.name="X")
m.2 <- melt(df,id=c(1,6),measure=c(3,5),value.name="Y")
result <- data.frame(m.1[,-3],Y=m.2$Y)
result
# group id X Y
# 1 18878713 1 524897 180779
# 2 18884056 2 531199 183111
# 3 18878713 1 525352 179484
# 4 18884056 2 532538 182503