在R语言中如何将同时包含数值和字符的变量转换为数值变量
Stata字符数字混合变量转数值型解决方案
操作思路
「家庭成员数」为字符型变量,同时存储了阿拉伯数字字符串和英文数字单词,只需先统一映射英文数字为对应数值,再转换剩余数字字符串即可。
具体操作代码
方案1:逐行匹配(适合英文数字取值少的场景)
* 生成空的数值型家庭成员数变量 gen hhsize = . * 匹配已出现的英文数字,可根据你的数据补充更多匹配规则 replace hhsize = 5 if lower(家庭成员数) == "five" replace hhsize = 6 if lower(家庭成员数) == "six" * 剩余原本为阿拉伯数字的字符串直接转换为数值 replace hhsize = real(家庭成员数) if missing(hhsize) * 校验是否存在未匹配的异常取值 tab 家庭成员数 if missing(hhsize)
方案2:批量映射(适合英文数字取值多的场景)
* 定义英文数字与阿拉伯数字的映射关系,可按需扩展 local num_map "one 1 two 2 three 3 four 4 five 5 six 6 seven 7 eight 8 nine 9 ten 10" * 批量替换变量中的英文数字为阿拉伯数字字符串 foreach word num of local num_map { replace 家庭成员数 = ustrregexra(lower(家庭成员数), "`word'", "`num'", .) } * 统一转换为数值型变量 gen hhsize = real(家庭成员数)
校验步骤
转换完成后执行以下代码验证匹配准确性:
* 交叉对比原变量和新生成的数值变量 tab 家庭成员数 hhsize, mis
内容的提问来源于stack exchange,提问作者Ricardo Xavier Torres Ortiz
相关产品推荐
相关产品推荐

