Stata使用reshape转宽时item在id内不唯一报错怎么解决
Stata 长表转宽表报错解决方案
报错原因
你遇到的values of variable item not unique within id报错,核心原因是reshape wide语法要求:i()参数指定的行标识变量,和j()参数指定的列标识变量的组合值必须全局唯一,不能存在2条及以上观测的id和item取值完全一致。
解决步骤
- 第一步:排查重复观测
运行如下命令统计重复的id+item组合数量:
duplicates report id item
如果输出结果中duplicates项大于0,说明确实存在重复值,需要先处理。
2. 第二步:处理重复观测
根据你的业务场景二选一:
- 如果重复是录入错误导致的无效重复,直接删除重复观测:
duplicates drop id item, force
- 如果重复是同一id同一item的多次有效记录,先聚合再重塑(示例为求和,也可替换为
mean/max等统计函数):
collapse (sum) consumption, by(id item)
注意:处理重复值前建议先备份原始数据,避免误删有效信息
3. 第三步:执行重塑命令
处理完重复值后运行你原来的reshape代码即可:
reshape wide consumption, i(id) j(item) string
结果验证
重塑后的数据每行对应一个id,列名格式为consumption_原item名称,列值为对应消费额,符合你的需求。
你提供的示例数据集本身不存在id+item重复,如果运行示例数据依然报错,先执行clear all清空内存残留数据,再重新运行数据集构造代码和上述重塑代码即可。
内容的提问来源于stack exchange,提问作者Amin Karimi
相关产品推荐
相关产品推荐

