You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:55:44