r - "Collapse"使用列名作为 ID 将多列分成两列

标签 r dataframe

在 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/

相关文章:

r - 如何提取 lmer 输出的固定效应部分的相关性

r - 更改函数内的默认 ggplot2 比例

python - 在某些条件下分割数据框

python - 在数据框中使用 For 循环将字符串转换为时间

python - Pandas DataFrame : replace all values in a column, 基于条件

python - 在 Python 中使用 prints 创建数据框

python - 估计 pandas 数据帧大小而不加载到内存中

r - 使用省略号将参数传递给函数,并为某些不存在的参数设置默认值

r - 使用 ggplot2 绘制偏最小二乘回归 (plsr) 双标图

R-导入CSV文件,所有数据归入一个(第一)列