如何解决如何一次在两个变量上使用foreach循环?
我想使用 foreach
循环一次在两个变量列表上执行命令。我的问题最好用一个例子来解释:
示例:在我的循环中,我想引用给定年份和前两年的变量。例如,在循环的第一次迭代中,我希望引用给定年份(2000 年)和该年之前两年(1998 年)的变量。在下一次迭代中,我想参考下一年(2002 年)和前两年(2000 年)的变量。下面是一些示例代码:
foreach y in 2000 2002 2004 2006 {
gen employment`y' = 0
replace employment`y' = . if work_1998==. | work_`y'==.
replace employment`y' = 1 if work_1998==1 & work_`y'==1
}
这段代码在 2000 年效果很好,我需要调用 2000 年和 1998 年(2000 年之前的两年)的变量。但是对于 2002、2004 等,我需要将上面代码中的 1998
替换为基本上在“两年前”自动调用的东西,而不仅仅是使用数字“1998”。我不知道该怎么做。任何建议表示赞赏!
解决方法
还是一个循环:
foreach y in 2000 2002 2004 2006 {
local Y = `y' - 2
gen employment`y' = 0
replace employment`y' = . if work_`Y' ==. | work_`y'==.
replace employment`y' = 1 if work_`Y' ==1 & work_`y'==1
}
也就是说,应用 reshape long
可能会更好,以便不同年份的数据保存在不同的观察中,而不是不同的变量中。
您对新变量的计算可以减少到
gen employment`y' = work_`Y' ==1 & work_`y'==1 if !missing(work_`y',work_`Y')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。