В моей таблице есть столбец char / string ICD9CODX, длина которого составляет 3 байта.Как показано ниже.
|ICD9CODX|
|:-------|
|410 |
|411 |
|398 |
|196 |
Я хотел бы найти / сопоставить каждую строку выше в некоторых наборах кодов, определенных как локальные макросы Stata, чтобы, если код принадлежит к набору, столбец, который отмечает наличие кодовдля этого набора создается и устанавливается значение 1, иначе 0. Локальные макросы см. ниже:
local cond_1 410 411
local cond_2 398 402 428
...
local cond_17 196 197 198 199
Таким образом, ожидаемый результат должен выглядеть следующим образом:
|ICD9CODX|condition_1|condition_2|........|condition_17|
|:-------|---------:|----------:|--------|-----------:|
|410 | 1| 0|........| 0|
|411 | 1| 0|........| 0|
|398 | 0| 1|........| 0|
|196 | 0| 0|........| 1|
Я устал от использования циклов.Мой код ниже:
forvalues i = 1/17 {
generate condition_`i' = 0
foreach dx in cond_`i' {
replace condition_`i' = 1 if strtrim(ICD9CODX) == "`dx'"
}
}
выше, но 0 реальных изменений сделано.Что не так с кодами?