Как удалить текст в данных, где должны быть цифры - PullRequest
0 голосов
/ 26 марта 2019

У меня есть следующая числовая переменная в 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 без «хорошо», «очень хорошо», «плохо» и т. Д. Мои данные изначально были файлом Stata, который я read через Haven в R. После выполнения некоторых манипуляций на файл, который я импортировал их обратно в Stata.

Как мне это сделать?

1 Ответ

3 голосов
/ 26 марта 2019

У вас есть числовая переменная, которую вам сначала нужно преобразовать в строку:

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 |
     +---------------------------------------+
...