在R中,我试图将数据帧的多个列折叠为两列,第一个数据帧中的列名被复制到结果数据帧中的各自列中.例如,我有以下数据框df:
A B C D
1 2 3 4
5 6 7 8
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取此输出,这在执行ANOVA测试时很有用:
DV IV
A 1
A 5
B 2
B 6
C 3
C 7
D 4
D 8
Run Code Online (Sandbox Code Playgroud)
我一直在通过声明新数据框来手动执行此操作:
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))
Run Code Online (Sandbox Code Playgroud)
我怀疑aggregate()或melt()可以更有效地做到这一点,但我在语法中迷失了.提前致谢!