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

Stata中无唯一标识符的长格式数据转宽格式操作问询

Stata长格式转宽格式解决方案

问题核心原因

你之前使用gen i = tag(a1)无法生成有效ID的原因是:tag()函数仅对变量的唯一值生成1次标记,而你的数据集里a1列是NAME/SEX/PHONE/SCORE四个值循环出现,自然无法对应到每个独立个体。

操作步骤

  • 第一步:按每4行对应1个个体的规则生成唯一ID
    代码:gen id = ceil(_n/4)
    说明:_n是Stata内置的行号系统变量,ceil()为向上取整函数,每4行对应同一个ID值,刚好匹配你数据集的结构。
  • 第二步:执行长转宽操作
    代码:reshape wide a2, i(id) j(a1) string
    说明:i(id)指定以id为个体标识,j(a1)指定用a1列的内容作为新变量名的后缀,string参数声明a1的取值为字符串类型,不加会报错。
  • 第三步(可选):清理变量名
    转换完成后默认变量名为a2NAME/a2SEX/a2PHONE/a2SCORE,执行以下命令即可去掉前缀得到干净的变量名:
    rename a2* *

完整可运行示例代码

* 录入示例数据
clear
input str10 a1 str10 a2
"NAME" "Jane"
"SEX" "female"
"PHONE" "234"
"SCORE" "9"
"NAME" "John"
"SEX" "male"
"PHONE" "444"
"SCORE" "10"
"NAME" "Baba"
"SEX" "male"
"PHONE" "777"
"SCORE" "5"
end

* 生成个体ID
gen id = ceil(_n/4)

* 长转宽
reshape wide a2, i(id) j(a1) string

* 清理变量名
rename a2* *

* 查看转换结果
list

内容的提问来源于stack exchange,提问作者24thDan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:15:02