如何在R中合并多个列

时间:2016-05-01 10:52:05

标签: r

我有一个名为mydf的数据框,其中包含数百个配对列(value1valueXrec1recX)。我想按照值的顺序将所有这些配对列组合成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     

1 个答案:

答案 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