如何用R将多列变量的取值合并为单列?
在R中实现多列数据合并为单列
原始数据集
首先构造你的原始数据框:
df <- data.frame( Var_A = c(11, 21), Var_B = c(1, 2) )
对应的表格形式:
| Var_A | Var_B |
|---|---|
| 11 | 1 |
| 21 | 2 |
需求目标
将两列数据合并为单列,最终结果如下:
| Var_A |
|---|
| 11 |
| 21 |
| 1 |
| 2 |
解决方案
方法1:基础R的stack()函数
stack()可以直接将数据框的列转换为键值对格式,再提取值列即可:
# 转换并生成结果数据框 result <- data.frame(Var_A = stack(df)$values) # 查看结果 print(result)
方法2:tidyverse工具包的pivot_longer()
如果你习惯使用tidyverse生态,pivot_longer()是更灵活的选择:
library(tidyverse) result <- df %>% pivot_longer( cols = everything(), # 选择所有列 names_to = NULL, # 丢弃原列名 values_to = "Var_A" # 设置新列名 ) print(result)
方法3:基础R直接拼接
直接提取两列的值并合并,简单直接:
result <- data.frame(Var_A = c(df$Var_A, df$Var_B)) print(result)
为什么t()和spread()不适用
t()是转置函数,会将行和列互换,得到的是行转列的结果,不符合合并列的需求;spread()的作用是将长格式数据转换为宽格式,和你需要的**宽格式转单列(长格式)**操作相反,因此无法得到目标结果。
内容的提问来源于stack exchange,提问作者user13195765
相关产品推荐
相关产品推荐

