【发布时间】:2015-11-19 18:54:35
【问题描述】:
所以,我的数据集中有一堆变量,它们是二进制的,包含有关个人是否已婚的信息。因此,例如,marr79 是一个人是否在 1979 年结婚。
我试图找出一个人从孩子出生起结婚(第一次)多少年。因此,如果孩子出生于 1980 年,而此人于 1980 年结婚,则它会添加到child_marr,并且在他们接下来的 18 年中也是如此。但是,如果遇到 0,我希望它停止。因此,如果 1980、1981 和 1982 有 1,而 1983 有 0,我希望它在 1983 年停止,即使 1984 年有 1。
我下面的代码(它是我尝试过的许多迭代之一)要么让它运行多年而没有停止,要么根本不运行,留下的值都是 0。
感谢任何帮助。
gen child_marr=0;
forvalues y=79(1)99 {;
gen temp_yr=1900+`y';
if (ch_yob<=temp_yr & marr`y'==1 & temp_yr<(ch_yob+18))==1 {;
replace child_marr = child_marr + 1;
};
else if (marr`y'==0 & ch_yob<=temp_yr) {;
continue, break;
};
drop temp_yr;
};
【问题讨论】:
-
您不清楚您的数据是什么样的。您能否发布一个最小、完整且可验证的示例以及所需的输出?您可以使用来自 SSC 的
dataex。 -
{警告:意见如下。} 你的 Stata 代码中的所有这些分号到底在做什么?
#delimit ;在允许偶尔出现非常长的命令时非常有用,但是当(a)不需要和(b)它非常不利于常见的编码实践语言?
标签: stata