Stata中基于家庭标识符将多行合并为单行的方法问询
在Stata中实现家庭层面数据宽格式转换的简便方法
可以通过生成观测序号 + reshape转宽 + 批量重命名变量三步完成,具体操作如下:
1. 预处理变量(可选但推荐)
先把带空格的变量名改成更易操作的格式:
rename "Household Identifier" hhid rename "Person Identifier" pid
2. 生成个人观测序号
为每个家庭内的每个成员的重复观测生成序号,标记这是该成员的第几次记录:
bysort hhid pid: gen seq = _n
3. 转换为宽格式
使用reshape wide命令将数据按家庭聚合,把每个成员的多次观测转成列:
reshape wide Var1 Var2, i(hhid) j(pid seq) string
i(hhid)指定以家庭ID作为唯一标识(最终每个家庭一行)j(pid seq)指定用成员ID和观测序号作为列名后缀string确保后缀以字符串形式拼接,避免自动补零
4. 批量重命名变量匹配目标格式
通过正则表达式批量修改变量名,将默认生成的VarX_Y_Z格式改为PersonY_VarX_Z:
rename (Var[0-9]_[0-9]_[0-9]) , regex(Var(\d+)_(\d+)_(\d+), Person\2_Var\1_\3)
完成后的数据结构就会和你要求的一致:每个家庭对应一行,缺失的观测位置自动填充为.。
内容的提问来源于stack exchange,提问作者Henry P
相关产品推荐
相关产品推荐

