Stata通过创建新变量合并数据实现长表转宽表操作方法
Stata 操作实现方案
提前给两份数据集起好方便调用的名字:只存name的主体表叫master.dta,存案例明细的长表叫cases.dta,全程跑命令就能出结果,不用手动改数据:
- 第一步:先把长格式的案例表转成宽结构
先打开案例明细表,处理下带特殊符号的变量名避免命令报错,再用长宽转换命令生成对应案例变量:
* 读取案例明细长表 use "cases.dta", clear * 把带#号的案例编号变量重命名,方便命令识别 rename `case #' case_id * 长转宽:按name分组,每个案例编号生成单独的内容列 reshape wide content, i(name) j(case_id) * 把自动生成的content1/2/3改成要求的变量名 rename content1 `1st case' rename content2 `2nd case' rename content3 `3rd case' * 临时存好处理完的宽格式案例表 save "cases_wide.dta", replace
- 第二步:和主体主表按name匹配合并
* 读取只存name的主体主表 use "master.dta", clear * 按name做1:1匹配,以主表为准保留a、b两个全部主体 merge 1:1 name using "cases_wide.dta", nogen
- 结果校验
跑完命令直接输入browse就能看到最终宽表:name是唯一标识,三列案例变量分别存对应内容,主体b没有第三例,对应单元格自动留空(Stata里显示为缺失值)。
小提示:如果怕匹配出错,第一次跑merge的时候可以去掉
, nogen参数,跑完看自动生成的_merge变量,所有取值为3就代表两个表的name完全匹配,没有漏匹配、错配的情况,确认完删掉_merge变量就行。
内容的提问来源于stack exchange,提问作者S Z
相关产品推荐
相关产品推荐

