Stata中如何将含缺失值与非数字字符串的变量转为数值型?
解决Stata字符串变量转换问题
报错原因
你生成的workplace_cleaned是字符串型变量,后续试图将其替换为数值5,字符串变量无法存储数值,因此触发type mismatch错误。
可行方案
方案一:使用real()函数分步处理
* 生成数值型变量,数字字符串转对应数值,空白/非数字字符串转缺失 gen workplace_cleaned = real(workplace) * 将非数字字符串对应的缺失值替换为5,空白值保留缺失 replace workplace_cleaned = 5 if real(workplace) == . & trim(workplace) != ""
real(workplace):把数字字符串转为数值,空白或非数字字符串返回缺失值.trim(workplace) != "":排除空白字符串(包括带空格的空白),只将非数字字符串对应的缺失替换为5
方案二:结合destring命令处理
* 将数字字符串转数值,空白/非数字字符串转缺失,生成新数值变量 destring workplace, gen(workplace_cleaned) * 替换非数字字符串对应的缺失为5,空白值保留缺失 replace workplace_cleaned = 5 if trim(workplace) != "" & missing(workplace_cleaned)
destring默认仅转换数字字符串,非数字和空白会让新变量为缺失- 后续通过原字符串是否非空白,筛选出非数字字符串对应的缺失值,替换为5
补充说明
如果原数据中的空白包含多个空格,trim()函数可以去除首尾空格,确保准确识别空白字符串。
内容的提问来源于stack exchange,提问作者Gioni_Bletsch
相关产品推荐
相关产品推荐

