#r #dataframe #data-structures #stata
#r #dataframe #структуры данных #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
без «хорошо», «очень хорошо», «плохо» и т.д. Мои данные изначально были файлом Stata, который я read
использовал Haven
в R. После выполнения некоторых манипуляций с файлом я импортировал их обратно в Stata.
Как я могу этого добиться?
Ответ №1:
У вас есть числовая переменная, которую сначала нужно преобразовать в строку:
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 |
---------------------------------------