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

在R语言中将多列数据展开为多行的技术实现求助

R语言:将多列数据展开为多行的解决方案

你当前的代码生成了一个宽格式的数据框,其中pro1到pro4属于同类型的重复字段,需要转换为长格式——保留Location和type作为标识列,将pro1-pro4的列名转为分类列,对应的值转为另一列,以匹配目标格式。

原始数据代码

Location<-c(rep("ATL",3),rep("CLE",3),rep("BOS",3))
type<-rep(c("sedan","truck","coupe"),3)
pro1<-rep(c("0800 SC","1500 SC","0900 SC"),3)
pro2<- rep(c("0800 SC","1500 SC","0900 SC"),3)
pro3<-rep(c("1000 SC","1700 SC","1100 SC"),3)
pro4<-rep(c("1300 SC","1100 SC","2300 SC"),3)
x<-data.frame(Location,type,pro1,pro2,pro3,pro4)

解决方案:使用tidyr::pivot_longer转换格式

tidyr包的pivot_longer函数是处理宽转长格式的标准工具,步骤如下:

# 安装并加载tidyverse包(未安装则执行第一行)
# install.packages("tidyverse")
library(tidyverse)

# 转换为目标长格式
x_long <- x %>%
  pivot_longer(
    cols = starts_with("pro"),  # 匹配所有以pro开头的列
    names_to = "process",       # 原列名存入新列process
    values_to = "schedule"      # 原列值存入新列schedule
  )

# 查看转换结果
print(x_long)

说明

  • 转换后的数据框会保留Location和type的每一组组合,将pro1-pro4的内容拆分为多行,每行对应一个process(如pro1、pro2)和对应的schedule值。
  • 若需要调整新列名称,直接修改names_to和values_to的参数即可(比如把process改成你想要的自定义名称)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:35:16