【发布时间】:2014-12-06 22:55:30
【问题描述】:
我刚刚开始学习 Stata,我遇到了困难。
我的问题是:我有两个不同的变量ATC 和A,其中A 可能是ATC 的子字符串。
现在我想用OK = 1 标记A 是ATC 的子串的所有观察结果。
我用一个简单的嵌套循环尝试了这个:
foreach x in ATC {
foreach j in A {
replace OK = 1 if strpos(`x',`j')!=0
}
}
但是,无论何时我运行此循环,都不会进行任何更改,即使应该有很多。
我觉得我可能应该给出一个索引,指定正在更改哪个OK(属于ATC/x 的那个),但我不知道该怎么做。这可能真的很简单,但我已经为此苦苦挣扎了一段时间。
我应该澄清一下:我的 A 列表与主列表是分开的(只是附加到它上面),并且只包含我用来识别我想要的 ATCs 的唯一键。所以我有 ~120 个 A-keys 和几百万个 ATC 键。我想做的是为每个A-key 遍历每个ATC 键,并用A 标记那些符合条件的ATC-keys。
这意味着我没有完整的 (ATC,A,OK) 元组,而是不同大小的单独列表。
例如:我有
ATC OK A
ABCD 0 .
EFGH 0 .
... ... ...
. . AB
. . ET
并希望将具有OK 的"ABCD" 标记为1 而"EFGH" 保持在0 的结果。
【问题讨论】:
标签: loops foreach nested substring stata