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

R语言使用spread/pivot_wider将含多类型数据的长表转换为宽表

R语言长表转指定格式宽表实现方法

实现思路

使用tidyr包的pivot_wider函数实现,该函数支持同时指定多个待展开的字段,且支持自定义列名格式,完美适配需求。spread为旧版函数,实现多字段展开需要额外嵌套处理,优先推荐pivot_wider方案。

完整实现代码

首先加载依赖包,再执行转换:

# 加载依赖(如果未安装先执行 install.packages("tidyr") 安装)
library(tidyr)

# 构造示例数据集
tst <- data.frame(ID = c(123, 123, 123, 124, 124, 124), 
              Identifier = c("S2", "S2", "S5", "S3", "S2", "S2"),
              Speed = c(15,24,11,34,13,15),
              Box_loc = c(801,802,803,801,802,803),
              Ord = c(86,87,90,81,82,84))

# 长转宽操作
tst_wide <- pivot_wider(
  data = tst,
  id_cols = ID, # 行唯一标识字段
  names_from = Box_loc, # 用作列名后缀的字段
  values_from = c(Identifier, Speed, Ord), # 待展开的字段,有多少加多少即可
  names_glue = "{.value}({Box_loc})" # 自定义列名格式,匹配需求的 字段名(Box_loc值) 结构
)

结果验证

运行后输出的tst_wide结构完全符合需求:

IDIdentifier(801)Speed(801)Ord(801)Identifier(802)Speed(802)Ord(802)Identifier(803)Speed(803)Ord(803)
123S21586S22487S51190
124S33481S21382S21584

扩展说明

如果待展开字段有10个,仅需要将所有待展开字段名添加到values_from参数的向量中即可,其余逻辑不需要调整,适配ID范围123~250的全量数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:12:03