因此,我在數據集中有一堆變量,它們是二進制的,並且包含個人是否已婚的信息。因此,例如,marr79
,是一個人是否在1979年結婚。在停止Stata循環時遇到問題
我試圖找出一個人結婚(第一次)從孩子出生多少年。所以,如果孩子出生於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)它非常反對通用編碼時,你會主動尋求用無關字符來混淆你的代碼在語言中練習? –