Stata面板数据转置:将宽格式数据转换为可合并的目标结构
Stata实现面板数据重塑的方法
作为Stata新手,这种数据格式转换的需求其实非常常见,咱们用Stata自带的reshape命令就能一步步搞定,下面是具体操作步骤:
步骤1:理解数据结构
你的原始数据是宽格式,结构如下:
Gender Year IndA IndB IndC 1 2008 0.22 0.34 0.45 2 2008 0.78 0.66 0.55 1 2009 0.25 0.36 0.49 2 2009 0.75 0.64 0.51 1 2010 0.28 0.38 0.48 2 2010 0.72 0.62 0.52
目标是把它转成混合格式:按年份+行业分组,将不同性别的数值放在同一行,同时添加自增ID。
步骤2:执行数据重塑
第一步:将行业指标转为长格式
首先用reshape long把IndA/IndB/IndC这几列拆成“行业”和“数值”两个变量:
* 把以Ind开头的列转为长格式,生成Industry变量(字符串类型) reshape long Ind, i(Gender Year) j(Industry) string
执行后数据会变成这样:
Gender Year Industry Ind 1 2008 A 0.22 1 2009 A 0.25 1 2010 A 0.28 2 2008 A 0.78 ...(其他行业的行)
第二步:将性别转为宽格式
接着用reshape wide把同一Year+Industry下的不同性别数值合并到同一行:
* 按Year和Industry分组,把Gender转为列 reshape wide Ind, i(Year Industry) j(Gender)
这一步会生成Ind1和Ind2两列,分别对应性别1和2的数值。
第三步:调整格式匹配需求
最后重命名列名、生成ID并调整变量顺序:
* 把列名改成你需要的1和2 rename Ind1 1 rename Ind2 2 * 生成自增的ID变量 gen ID = _n * 调整变量顺序,和目标格式一致 order ID Year Industry 1 2
最终结果
执行完所有命令后,你的数据就会变成想要的格式:
ID Year Industry 1 2 1 2008 A 0.22 0.78 2 2009 A 0.25 0.75 3 2010 A 0.28 0.72 4 2008 B 0.34 0.66 5 2009 B 0.36 0.64 6 2010 B 0.38 0.62 7 2008 C 0.45 0.55 8 2009 C 0.49 0.51 9 2010 C 0.48 0.52
要是操作过程中遇到报错,大概率是原始数据的变量名不符合reshape的要求(比如IndA/IndB的前缀不一致),检查一下变量名就能解决啦~
内容的提问来源于stack exchange,提问作者Ben C
相关产品推荐
相关产品推荐

