You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R将多列变量的取值合并为单列?

在R中实现多列数据合并为单列

原始数据集

首先构造你的原始数据框:

df <- data.frame(
  Var_A = c(11, 21),
  Var_B = c(1, 2)
)

对应的表格形式:

Var_AVar_B
111
212

需求目标

将两列数据合并为单列,最终结果如下:

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:15:16