使用pivot_wider时如何合并重复行列并生成固定数量员工列?
解决方案:固定列数的宽表转换
完全可以实现这个需求,用R的tidyverse工具链就能轻松搞定,具体步骤如下:
1. 准备环境与示例数据
先加载必要的包,并构造你提供的示例数据集:
library(tidyverse) # 示例数据集 df <- tibble( Case.Number = c("001", "001", "002", "003"), `Employee Name` = c("Name 1", "Name 2", "Name 3", "Name 2") )
2. 数据转换步骤
核心思路是先给每个Case.Number下的员工编序号,限制序号范围为1-3,再转宽表:
df_wide <- df %>% # 按案件编号分组,给组内员工编顺序号 group_by(Case.Number) %>% mutate(emp_seq = row_number()) %>% ungroup() %>% # 只保留前3个员工(若某案件关联超过3人,仅取前3) filter(emp_seq <= 3) %>% # 补全每个案件的1-3号员工位置,确保转宽表后列数固定 complete(Case.Number, emp_seq = 1:3) %>% # 转换为宽表,设置列名格式 pivot_wider( id_cols = Case.Number, names_from = emp_seq, values_from = `Employee Name`, names_prefix = "Employee Name " )
3. 最终输出
运行上述代码后,得到的结果完全符合你的预期:
# # A tibble: 3 × 4 # Case.Number `Employee Name 1` `Employee Name 2` `Employee Name 3` # <chr> <chr> <chr> <chr> # 1 001 Name 1 Name 2 NA # 2 002 Name 3 NA NA # 3 003 Name 2 NA NA
内容的提问来源于stack exchange,提问作者bjones22
相关产品推荐
相关产品推荐

