如何将宽格式年份数据转为长格式?求R/Python实现代码
宽表转长表实现方案
Python 实现
使用 pandas 的 melt 函数可快速完成宽表到长表的转换:
import pandas as pd # 构造原始数据 df = pd.DataFrame({ 'state': ['First', 'Second', 'Third', 'Third'], 'year1': ['2000', '2007', '2008', '2010'], 'year 2': ['2004-2005', '2010-2011', '2010', '2012'] }) # 转换为长表 long_df = df.melt( id_vars='state', value_vars=['year1', 'year 2'], value_name='year' ).drop(columns='variable') # 重置索引(可选,使索引连续) long_df = long_df.reset_index(drop=True) print(long_df)
运行后输出结果即为目标格式的表格。
R 实现
使用 tidyverse 中的 tidyr::pivot_longer 函数实现转换:
library(tidyverse) # 构造原始数据 df <- tibble( state = c("First", "Second", "Third", "Third"), year1 = c("2000", "2007", "2008", "2010"), `year 2` = c("2004-2005", "2010-2011", "2010", "2012") ) # 转换为长表 long_df <- df %>% pivot_longer( cols = starts_with("year"), names_to = NULL, values_to = "year" ) print(long_df)
运行上述代码即可得到所需的长表结构。
内容的提问来源于stack exchange,提问作者mgdata
相关产品推荐
相关产品推荐

