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

R语言如何将含多x列的宽格式dataframe转换为合并单列的长格式

R语言宽表转长表实现方案

方法1:使用tidyr包(tidyverse生态推荐方案)

首先加载所需包:

library(tidyr)

转换代码如下:

long_df <- dataframe %>%
  # 移除不需要的z列
  select(-z) %>%
  pivot_longer(
    # 指定需要合并的x1/x2/x3列,若所有x前缀列都要合并可简化为 cols = starts_with("x")
    cols = c(x1, x2, x3),
    # 不保留原列名对应的分类列
    names_to = NULL,
    # 合并后的值列命名为x
    values_to = "x"
  ) %>%
  # 按y列排序,匹配示例输出顺序
  arrange(y)

运行后打印结果即可得到需求格式的长表:

print(long_df)

方法2:使用reshape2包melt函数

如果习惯使用reshape2生态,可以用如下实现:

library(reshape2)
long_df <- melt(
  dataframe,
  # 指定固定保留的y列
  id.vars = "y",
  # 指定需要合并的列
  measure.vars = c("x1", "x2", "x3"),
  value.name = "x"
)
# 移除原列名对应的variable列,按y排序
long_df <- long_df[order(long_df$y), c("y", "x")]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:36:01