Stata 13中collapse命令类型不匹配及数据追加错误排查
解决Stata 13中类型不匹配与结果偏差问题
一、彻底解决类型不匹配错误(r(106)/r(109))
排查变量中的非数值杂质
对报错的变量(如erate、averagerate),用以下命令定位异常内容:inspect erate // 查看变量的字符分布、频率统计 list if missing(real(erate)) // 列出无法转成数值的观测找出
"NA"、" "、"--"这类非数值标记,为后续处理提供依据。精准执行
destring转换
不要仅依赖force参数,明确指定需要忽略的非数值字符,避免强行转换生成错误数值:destring erate averagerate, replace force ignore("NA" "N/A" " " "--")转换后用
describe erate averagerate确认变量类型为float或int。修复
collapse的r(109)错误
该错误多因分组变量或统计量变量类型混乱:- 若分组变量是字符串类型,检查是否存在空值或异常字符,必要时转成数值分组:
encode group_var, gen(group_num) - 确保
collapse中的统计量参数仅用于数值变量,比如不要对字符串变量使用mean(),命令示例:collapse (mean) erate averagerate, by(group_num year)
- 若分组变量是字符串类型,检查是否存在空值或异常字符,必要时转成数值分组:
二、修正destring后结果与示例的偏差
核对原始数据差异
用list averagerate in 1/30对比示例的原始数据,确认是否存在原始观测值的差异(比如示例数据已提前清理异常值,而你的数据未处理)。校验
collapse语法一致性
对比示例中的collapse命令,检查是否遗漏by()分组变量、统计量类型(比如示例用sum()你用了mean()),确保参数完全匹配。分步验证统计结果
先用summarize erate averagerate获取整体描述统计,和示例的整体均值对比;再用bysort group_num: summarize erate averagerate查看分组统计,定位偏差出现在整体还是分组层面,再针对性调整数据清理或分析命令。
内容的提问来源于stack exchange,提问作者Roman Khudoberdin
相关产品推荐
相关产品推荐

