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

如何在R中使用pivot_wider合并行实现数据宽表重塑?

问题描述

我有如下格式的数据集:

idgroupABCD
id120810.0181
id13115660.05181
id220580.0158
id2301100.01110
id3295810.03176
id42401260.02166

需要将其重塑为如下宽表格式:

idA_1A_2A_3B_1B_2B_3C_1C_2C_3D_1D_2D_3
id1001150816600.010.05081181
id200005811000.010.01058110
id30950081000.03001760
id404000126000.02001660

我尝试了单独处理每个变量的代码:

test <- pivot_wider(data, names_from = group, values_from = A)

但结果没有合并id行,也没得到目标结构,请问该怎么修正代码?


解决方案

直接一次性指定所有要转换的变量,同时设置缺失值填充规则,就能自动按id合并行并生成目标格式。具体代码如下:

library(tidyr)

# 假设你的原始数据框名为data
test <- pivot_wider(
  data,
  id_cols = id,  # 明确按id分组合并
  names_from = group,
  values_from = c(A, B, C, D),  # 同时处理所有需要宽表化的变量
  names_glue = "{.value}_{.name}",  # 生成「变量_分组」格式的列名
  values_fill = 0  # 缺失的分组(比如group=1)自动填充0
)

关键参数说明:

  • id_cols = id:强制以id作为分组依据,确保相同id的行自动合并。
  • values_from = c(A, B, C, D):不用单独处理每个变量,一次性批量转换所有目标变量。
  • names_glue:精准控制列名格式,完美匹配你需要的A_1、B_3这类命名。
  • values_fill = 0:原始数据里没有group=1的记录,转换后对应位置自动补0,和目标格式一致。

运行这段代码就能得到你想要的宽表结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:54:28