【发布时间】:2015-08-05 16:22:03
【问题描述】:
我在 Stata 中创建循环时遇到问题。
我在 Stata 中有一个数据集,我通过变量 k10 将我的观察分为 6 类。所以 k10 取值 1,2,3,4,5,6。 现在我想根据其类别为每个观察值分配一个值:
value 15 for k10=1
value 10 for k10=2
value 8 for k10=3
value 5 for k10=4
value 4 for k10=5
value 2 for k10=6
如果我创建一个新变量 w10 并按照以下方式进行操作,这很容易:
gen w10 =.
replace w10 = 15 if k10==1
replace w10 = 10 if k10==2
replace w10 = 8 if k10==3
replace w10 = 5 if k10==4
replace w10 = 4 if k10==5
replace w10 = 2 if k10==6
现在我尝试使用循环来简化代码,不幸的是它并没有达到我想要的效果。
我的循环:
gen w10=.
local A "1 2 3 4 5 6"
local B "15 10 8 5 4 2"
foreach y of local A {
foreach x of local B {
replace w10 = `x' if k10= `y'
}
}
循环将值 2 分配给每个观察值。原因是 if-condition k10=`y' 总是为真,每次都会覆盖被替换的 w10s 直到结束,对吧?
那么如何正确编写循环呢?
【问题讨论】: