如何删除应该有数字的数据中的文本

时间:2019-03-26 10:17:27

标签: r dataframe data-structures stata

我在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。

我该怎么做?

1 个答案:

答案 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 |
     +---------------------------------------+