You need to enable JavaScript to run this app. R语言如何以指定列为键将现有列值拆分为多个新列
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何以指定列为键将现有列值拆分为多个新列

R长表转动态角色宽表实现方案

你之前使用pivot_wider无法实现需求,核心原因是缺少同一用户下角色的顺序标识列,补充该列后即可自动生成对应数量的角色列,完全适配动态变化的角色数量,无需手动指定列数。

完整实现代码(tidyverse版本)

# 加载依赖包
library(tidyverse)

# 处理逻辑(df为你的原始数据框名)
df_result <- df %>%
  # 按姓名分组,给每个用户下的角色生成顺序序号
  group_by(Name) %>%
  mutate(role_seq = str_pad(row_number(), width = 2, pad = "0")) %>%
  ungroup() %>%
  # 自动生成Role_01、Role_02...等列
  pivot_wider(
    id_cols = Name,
    names_from = role_seq,
    values_from = Roles,
    names_prefix = "Role_",
    # 可选参数:空角色位置填充空字符串,默认填充NA
    values_fill = ""
  )

说明

  • 不需要提前统计最大角色数量,代码会自动根据数据中的最大角色数生成对应列,后续角色数增长也无需修改逻辑
  • 不需要前导零的话可以删掉str_pad()包裹,直接写mutate(role_seq = row_number()),生成的列名会是Role_1、Role_2格式
  • 保留了原始数据中角色的排列顺序,你也可以在group_by之后加arrange(Roles)实现按角色名排序后再生成序号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 17:36:04