熔化给出几个有价值的列

时间:2014-03-01 14:26:08

标签: r dataframe reshape2 melt

我正在读取一些结果文件中的参数估计值,我想在表格中并排比较。但是我无法将数据帧添加到我想要的结构中(参数名称,值(文件1),值(文件2))

当我读入文件时,我得到一个宽的数据框,每个参数都在一个单独的列中,我想使用melt转换为“long”格式。但是这只给出了一列值。关于如何在不使用for循环的情况下获取多个值列的任何想法?

paraA <- c(1,2)
paraB <- c(6,8)
paraC <- c(11,9)
Source <- c("File1","File2")
parameters <- data.frame(paraA,paraB,paraC,Source)

wrong_table <- melt(parameters, by="Source")

2 个答案:

答案 0 :(得分:2)

您可以将meltcast结合使用,以获得您想要的效果。这实际上是预期的使用模式,这就是函数具有它们的名称的原因:

m<-melt(parameters)
dcast(m,variable~Source)
#   variable File1 File2
# 1    paraA     1     2
# 2    paraB     6     8
# 3    paraC    11     9

答案 1 :(得分:2)

将@ alexis的评论转换为答案,转置(t())几乎可以满足您的需求:

setNames(data.frame(t(parameters[1:3])), parameters[, "Source"])
#       File1 File2
# paraA     1     2
# paraB     6     8
# paraC    11     9

我已使用上面的setNames方便地在一步中重命名结果data.frame