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

如何使用dplyr透视dataframe:将apqual转为列并合并同COD_REG行

解决方案

你需要用pivot_wider(而非pivot_longer——后者是将宽表转为长表,你当前需求是把长表转宽表)来实现这个操作,具体代码如下:

library(dplyr)
library(tidyr)

# 执行透视转换
data_wide <- data_shape %>%
  pivot_wider(
    id_cols = COD_REG,  # 按COD_REG分组合并行
    names_from = apqual,  # 用apqual的取值作为列名后缀
    values_from = c(apqual, num_pen, pens_mean, pens_mean_real),  # 需要展开的目标列
    names_glue = "{.name}{names_from}"  # 定义新列名格式:原列名+apqual值
  )

# 查看转换结果
head(data_wide)

代码说明

  • id_cols = COD_REG:指定以COD_REG为分组键,将同一COD_REG的多行合并为一行
  • names_from = apqual:把apqual列的不同取值(15、16)作为新列名的后缀
  • values_from:明确需要按照apqual值拆分展开的所有列
  • names_glue:设置新列名的生成规则,保证列名符合你要求的原列名+apqual值格式(如apqual15、num_pen16)

执行后得到的结果会完全匹配你期望的格式,每个COD_REG对应一行,所有相关列都会以15/16作为后缀区分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:07:11