提问人:Bénédicte 提问时间:5/19/2022 最后编辑:Nick CoxBénédicte 更新时间:5/20/2022 访问量:151
Stata 中的 while 循环
while loops in Stata
问:
我正在尝试创建一些循环以避免有太多的行代码。 这是我当前的代码。有很多冗余,有什么方法可以用一个循环来写它吗?非常感谢!
replace WTP_ph = +87.5 if WTP_ph == -76
replace WTP_ph = +62.5 if WTP_ph == -50
replace WTP_ph = +37.5 if WTP_ph == -25
replace WTP_ph = +12.5 if WTP_ph == 0
replace WTP_ph = -12.5 if WTP_ph == +25
replace WTP_ph = -37.5 if WTP_ph == +50
replace WTP_ph = -62.5 if WTP_ph == +75
replace WTP_ph = -87.5 if WTP_ph == +76
replace WTP_pe = +87.5 if WTP_pe == -76
replace WTP_pe = +62.5 if WTP_pe == -50
replace WTP_pe = +37.5 if WTP_pe == -25
replace WTP_pe = +12.5 if WTP_pe == 0
replace WTP_pe = -12.5 if WTP_pe == +25
replace WTP_pe = -37.5 if WTP_pe == +50
replace WTP_pe = -62.5 if WTP_pe == +75
replace WTP_pe = -87.5 if WTP_pe == +76
replace WTP_pa = +87.5 if WTP_pa == -76
replace WTP_pa = +62.5 if WTP_pa == -50
replace WTP_pa = +37.5 if WTP_pa == -25
replace WTP_pa = +12.5 if WTP_pa == 0
replace WTP_pa = -12.5 if WTP_pa == +25
replace WTP_pa = -37.5 if WTP_pa == +50
replace WTP_pa = -62.5 if WTP_pa == +75
replace WTP_pa = -87.5 if WTP_pa == +76
答:
1赞
Nick Cox
5/19/2022
#1
这是一个开始
foreach v in WTP_ph WTP_pe WTP_pa {
replace `v' = 87.5 if `v' == -76
replace `v' = 62.5 if `v' == -50
replace `v' = 37.5 if `v' == -25
replace `v' = 12.5 if `v' == 0
replace `v' = -12.5 if `v' == 25
replace `v' = -37.5 if `v' == 50
replace `v' = -62.5 if `v' == 75
replace `v' = -87.5 if `v' == 76
}
然后我们注意到映射中的一种模式,只是最外层的语句不同,所以我们可以去
foreach v in WTP_ph WTP_pe WTP_pa {
replace `v' = 87.5 if `v' == -76
replace `v' = 12.5 - `v' if inrange(`v', -50, 75)
replace `v' = -87.5 if `v' == 76
}
评论