我在Stata中具有以下数字变量:
* Example generated by -dataex-. To install: ssc install dataex
clear
input long r_3srhlt
3
3
2
2
4
1
1
3
3
4
end
label values r_3srhlt r_3srhlt
label def r_3srhlt 1 ".", modify
label def r_3srhlt 2 "2.very ...", modify
label def r_3srhlt 3 "3.good", modify
label def r_3srhlt 4 "5.poor", modify
我只想保留数字而不是文字。
例如,我想要3, 3, 2, 2, 5, . , . , 3, 3, 5
不包含“好”,“非常好”,“差”等。我的数据最初是我在read
中通过Haven
在R中创建的Stata文件在对文件进行了一些处理之后,我将它们导入了Stata。
我该怎么做?
答案 0 :(得分:3)
您有一个数字变量,首先需要将其转换为字符串:
decode r_3srhlt, generate(r_3srhlt_string)
然后,您可以使用real()
函数和一个简单的正则表达式一次性获得所有数字:
generate wanted = real(ustrregexs(0)) if ustrregexm(r_3srhlt_string, "[0-9]*")
list, separator(0) abbreviate(15)
+---------------------------------------+
| r_3srhlt r_3srhlt_string wanted |
|---------------------------------------|
1. | 3.good 3.good 3 |
2. | 3.good 3.good 3 |
3. | 2.very ... 2.very ... 2 |
4. | 2.very ... 2.very ... 2 |
5. | 5.poor 5.poor 5 |
6. | . . . |
7. | . . . |
8. | 3.good 3.good 3 |
9. | 3.good 3.good 3 |
10. | 5.poor 5.poor 5 |
+---------------------------------------+