【发布时间】:2019-06-05 16:16:47
【问题描述】:
在我的数据中,我有一个字符串变量ICD9CODX,如下所示:
|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|
我尝试使用下面的循环,但 0 进行了真正的更改:
forvalues i = 1/17 {
generate condition_`i' = 0
foreach dx in cond_`i' {
replace condition_`i' = 1 if strtrim(ICD9CODX) == "`dx'"
}
}
我的循环有什么问题?
【问题讨论】:
标签: loops stata stata-macros