电子表格首行年份转列生成tidy规范结构化数据集的方法咨询
按Tidy规范转换宽表数据的实现方案
原始数据集样例如下(行维度为车型,列维度为年份,单元格值为对应产量):
Excel 操作方案
直接使用Power Query的逆透视功能完成转换,步骤如下:
- 选中全表数据区域,点击顶部菜单栏「数据」-「从表格/范围」,将数据导入Power Query编辑器
- 在编辑器内选中「车型名称」列,右键点击「逆透视其他列」
- 将生成的「属性」列重命名为年份,「值」列重命名为产量
- 点击左上角「关闭并上载」,即可将转换后的规范数据导出到Excel工作表
Python 实现方案(基于Pandas库)
使用melt方法完成宽表转长表操作,示例代码如下:
import pandas as pd # 读取源数据,可根据文件格式替换为read_csv等方法 df = pd.read_excel("你的源数据文件路径.xlsx") # 执行逆透视转换 tidy_df = df.melt( id_vars = "车型名称", # 指定保持不变的列 var_name = "年份", # 原表头年份字段转换后的新列名 value_name = "产量" # 原单元格产量值转换后的新列名 ) # 导出转换完成的Tidy数据 tidy_df.to_excel("整理后的数据.xlsx", index=False)
R 实现方案(基于tidyverse生态)
使用pivot_longer函数完成转换,示例代码如下:
library(readxl) library(tidyr) library(dplyr) # 读取源数据 df <- read_excel("你的源数据文件路径.xlsx") # 执行长表转换 tidy_df <- df %>% pivot_longer( cols = !`车型名称`, # 除车型名称外的所有列都参与转换 names_to = "年份", values_to = "产量" ) # 导出结果 writexl::write_xlsx(tidy_df, "整理后的数据.xlsx")
内容的提问来源于stack exchange,提问作者Brick
相关产品推荐
相关产品推荐

