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

如何使用Stata按2位编码首位逐人聚合同类别变量

实现方法

根据你描述的规则,有以下几种常用实现方式,可根据你的数据结构选择:

1. 直接手动计算(最稳妥,适合条目少的场景)

如果你的原始数据是宽表格式(每个编码对应单独一列,个人为单行),直接生成聚合变量即可,推荐使用rowtotal()函数避免缺失值导致结果异常:

* item1 为1开头指定条目加总,默认忽略缺失值
gen item1 = rowtotal(item11 item14 item15 item17)
* item2 为2开头指定条目加总
gen item2 = rowtotal(item21 item25)

* 如果要求所有参与加总的条目都非缺失才返回有效值,添加missing参数
* gen item1 = rowtotal(item11 item14 item15 item17), missing
* gen item2 = rowtotal(item21 item25), missing

计算完成后如果只需要保留个人标识和聚合结果,执行:

* 把id替换为你实际使用的个人唯一识别变量名
keep id item1 item2

2. 批量匹配计算(适合条目多、后续有扩展需求的场景)

如果你的变量名统一为item+两位编码的格式,没有其他同前缀无关变量,可以用通配符批量匹配同首位的变量:

* 匹配所有以item1开头的变量加总
gen item1 = rowtotal(item1*)
* 匹配所有以item2开头的变量加总
gen item2 = rowtotal(item2*)

3. 长表数据处理

如果你的原始数据是长表结构(每个编码对应一行,包含个人id、编码、数值三个核心字段),可以先提取编码首位再聚合:

* 提取两位编码的首位,code替换为你的编码变量名
gen first_digit = substr(code, 1, 1)
* 按个人id和编码首位求和
collapse (sum) value, by(id first_digit)
* 转宽表得到最终结果
reshape wide value, i(id) j(first_digit)
rename value1 item1
rename value2 item2

内容的提问来源于stack exchange,提问作者Amin Karimi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:45:07