如何在R中使用pivot_wider将长格式数据集转换为宽格式
解决方案
Python Pandas 实现
你的数据集属于固定周期堆叠的长格式数据,每3行对应一条完整观测,按如下代码处理即可:
import pandas as pd # 假设你已将原始数据读入为DataFrame,列名为col1、col2 # 生成分组标识:固定每3行一组时用这行 df['group_id'] = df.index // 3 # 若不固定行数,以ID出现作为新分组的标识,用下面这行代替上一行即可 # df['group_id'] = df['col1'].eq('ID').cumsum() # 透视转为宽格式 df_wide = df.pivot( index='group_id', columns='col1', values='col2' ).reset_index(drop=True) # 输出结果和你预期的格式完全一致 print(df_wide)
R tidyverse 实现
library(tidyverse) # 生成分组标识,固定3行一组用这部分 df <- df %>% mutate(group_id = (row_number() - 1) %/% 3) # 不固定行数按ID分组用下面这行代替上面的mutate逻辑 # df <- df %>% mutate(group_id = cumsum(col1 == "ID")) # 透视转宽 df_wide <- df %>% pivot_wider( names_from = col1, values_from = col2 ) %>% select(-group_id)
Excel Power Query 实现
- 把原始数据导入Power Query编辑器
- 新增从0开始的索引列
- 新增自定义列,输入公式
Number.IntegerDivide([索引], 3)作为分组列 - 选中col1列,执行「透视列」操作,值列选col2,聚合选项选「不要聚合」
- 删除不需要的索引列、分组列即可导出结果
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

