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

在R语言中合并所有列并保留列名的实现方法问询

实现宽格式数据转长格式的方法

你需要的是把宽格式的数据框转换为长格式,并且调整列的顺序。这里有两种简单易用的实现方式:

方法1:使用tidyverse工具链(推荐日常数据分析使用)

如果你平时习惯用tidyverse生态,pivot_longer函数可以轻松完成这个转换,步骤清晰直观:

首先确保你已经安装并加载了tidyverse包:

# 首次使用先安装包
install.packages("tidyverse")
# 加载包
library(tidyverse)

然后运行转换代码:

# 转换数据并调整列顺序
new_df <- df %>%
  pivot_longer(
    cols = everything(),  # 选中数据框的所有列
    names_to = "colName", # 原列名将被存储到colName列
    values_to = "new"     # 原列的数值将被存储到new列
  ) %>%
  select(new, colName)    # 调整列的顺序,让new列在前

# 查看转换后的结果
print(new_df)

运行后得到的结果就是你想要的格式:

new colName
1 1 X1
2 1 X1
3 1 X1
4 3 X2
5 0 X2
6 1 X2
7 4 X3
8 0 X3
9 0 X3

方法2:使用base R的stack函数(无需额外安装包)

如果不想加载第三方包,base R自带的stack函数也能快速完成转换,代码更简洁:

# 直接转换数据
new_df <- stack(df)
# 修改列名为需求的名称
names(new_df) <- c("new", "colName")
# 调整列顺序
new_df <- new_df[, c("new", "colName")]

# 查看结果
print(new_df)

这个方法的原理是stack函数默认将原数据框的列值存入values列,列名存入ind列,我们只需要修改列名并调整顺序即可得到目标格式。

两种方法都能完美实现你的需求,你可以根据自己的使用习惯选择~

内容的提问来源于stack exchange,提问作者Rahul Agrawal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:22:47