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

R语言:基于Type列创建QTY/unit衍生列并实现宽表转换

长格式转宽格式(多变量扩展)解决方案

不用折腾循环创建衍生列,用tidyverse里的pivot_wider就能一步搞定你的需求,代码简洁高效还不容易出错:

1. 先复现原始数据(方便你测试)

library(tidyverse)

df <- tibble(
  Id = c(1,2,3,2,3,1),
  Type = c("A","B","C","A","B","C"),
  QTY = c(5,10,5,10,5,10),
  unit = c(1,2,3,4,5,6)
)

2. 核心转换代码

df2 <- df %>%
  pivot_wider(
    id_cols = Id,          # 按Id分组聚合
    names_from = Type,     # 用Type的取值作为新列前缀
    values_from = c(QTY, unit),  # 需要扩展的两个变量
    names_glue = "{Type}_{.value}",  # 定义新列名格式:Type_原列名
    values_fill = 0        # 缺失值自动填充0
  ) %>%
  arrange(Id)  # 按Id排序,和目标结果一致

代码说明

  • names_glue参数自动生成A_QTY、A_unit这类符合要求的列名,省去手动写循环创建列的麻烦
  • values_fill = 0直接把每个Id缺失的Type对应的QTY和unit值补0,不用后续单独处理缺失值
  • 运行后得到的df2完全匹配你想要的宽格式数据表结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:30:12