在 R 中,我试图将数据帧的多列折叠成两列,并将第一个数据帧中的列名复制到结果数据帧中它们自己的列中。例如,我有以下数据框 df
:
A B C D
1 2 3 4
5 6 7 8
我正在尝试获取此输出,这在执行 ANOVA 测试时很有帮助:
DV IV
A 1
A 5
B 2
B 6
C 3
C 7
D 4
D 8
我一直在通过像这样声明新的数据框来手动解决这个问题:
df2 <- data.frame("DV" = c(rep("A", 2), rep("B", 2), rep("C", 2), rep("D", 2)),
"IV" = c(df$A, df$B, df$C, df$D))
我怀疑aggregate() 或melt() 可以更有效地做到这一点,但我在语法中迷失了。提前致谢!
最佳答案
您可以使用 melt
包中的 reshape2
library(reshape2)
melt(df, variable.name = "DV", value.name = "IV")
DV IV
1 A 1
2 A 5
3 B 2
4 B 6
5 C 3
6 C 7
7 D 4
8 D 8
关于r - "Collapse"使用列名作为 ID 将多列分成两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29338830/