我有一个名为mydf
的数据框,其中包含数百个配对列(value1
到valueX
和rec1
到recX
)。我想按照值的顺序将所有这些配对列组合成value和rec列,如结果中所示。我怎么能在R中这样做?
mydf<-structure(list(samples = structure(1:3, .Label = c("A", "B",
"c"), class = "factor"), value1 = c(1, 8, 7), value2 = c(2, 5,
9), rec1 = c(7158, 6975, 6573), rec2 = c(1122, 2235, 229)), .Names = c("samples",
"value1", "value2", "rec1", "rec2"), row.names = c(NA, -3L), class = "data.frame")
结果
sample value rec
A 1 7158
A 2 1122
B 5 2235
C 7 6573
B 8 6975
C 9 229
答案 0 :(得分:3)
您可以使用data.table
melt
方法快速解决此问题,该方法允许您在measure.vars
参数中指定正则表达式模式
library(data.table) # v >= 1.9.6
melt(setDT(mydf), measure = patterns("value", "rec"), value.name = c("value", "rec"))
# samples variable value rec
# 1: A 1 1 7158
# 2: B 1 8 6975
# 3: c 1 7 6573
# 4: A 2 2 1122
# 5: B 2 5 2235
# 6: c 2 9 229