如何用Power Query将Excel长格式患者手术表转为宽格式?
在Power Query中将长格式手术记录转换为宽格式表格
需求说明
现有长格式手术记录表格,同一患者的多条手术对应多行数据,需要转换为宽格式:每个患者一行,手术代码按顺序生成PROC_NUMBER_1、PROC_NUMBER_2等列。
原始长格式数据:
patient_no,FirstName,procedure_code 1,Hana,PROC_X 2,Robert,PROC_X 2,Robert,PROC_Y 3,Stepan,PROC_Z 4,Ahmed,PROC_Z
目标宽格式效果:
patient_no,FirstName,PROC_NUMBER_1, PROC_NUMBER_2, PROC_NUMBER_3, PROC_NUMBER_4 1,Hana,PROC_X,,, 2,Robert,PROC_X,PROC_Y,, 3,Stepan,PROC_Z,,, 4,Ahmed,PROC_Z,,,
Power Query操作步骤
导入数据到Power Query
打开Excel,将数据导入Power Query(数据选项卡→从表格/范围,或从CSV导入)。给每个患者的手术添加序号
- 选中
patient_no和FirstName两列,点击「转换」选项卡→「分组依据」。 - 分组设置:操作选择「所有行」,新列名设为
手术记录,点击确定。 - 添加自定义列,公式输入:
Table.AddIndexColumn([手术记录], "序号", 1, 1),命名为带序号的手术记录。 - 点击
带序号的手术记录列的展开按钮,展开procedure_code和序号两列。
- 选中
生成目标列名
添加自定义列,公式输入:"PROC_NUMBER_" & Text.From([序号]),命名为目标列名。透视列完成转换
- 选中
patient_no、FirstName两列,点击「转换」选项卡→「透视列」。 - 透视设置:值列选择
procedure_code,列值选择目标列名,点击确定。
- 选中
调整格式(可选)
- 按
PROC_NUMBER_1、PROC_NUMBER_2的顺序调整列位置。 - 空值保持默认即可,无需额外处理。
- 按
内容的提问来源于stack exchange,提问作者Jan
相关产品推荐
相关产品推荐

