【发布时间】:2015-08-13 04:25:09
【问题描述】:
我有关于 1000 多个家庭的数据。每个家庭有 31 个数据点。除其他外,该数据包含一个变量,该变量指示该家庭是否在某个商店进行了购买。我想创建一个虚拟变量,每当一个家庭进行购买时给出一个 1,并在该特定家庭的剩余时间段内保持 1。
例如,
Household ID - Purchase - New variable
1 - 0 - 0
1 - 0 - 0
1 - 0 - 0
1 - 1 - 1
1 - 0 - 1
2 - 0 - 0
2 - 1 - 1
2 - 0 - 1
2 - 1 - 1
2 - 1 - 1
现在我尝试使用以下代码,
//electronics purchase dummy durin the full time series
gen betaal_winkel_ykw_dummy=0
replace betaal_winkel_ykw_dummy=1 if Betaal_winkel_ykw>0 & !missing(Betaal_winkel_ykw)
levelsof HHID, local(levels)
foreach l of local levels {
replace betaal_winkel_ykw_dummy=1 if L.betaal_winkel_ykw_dummy==1
}
但是,Stata 在正确处理此代码时遇到了一些困难,因为当我运行此代码时,它首先会进行大量“更改”,因此它仍在计算一些东西(我不知道是什么),但它没有再做些改变,
. foreach l of local levels {
2. replace betaal_winkel_ykw_dummy=1 if L.betaal_winkel_ykw_dummy==1
3. }
(71048 real changes made)
(0 real changes made)
(0 real changes made)
(0 real changes made)
而且这种情况还在继续。我究竟做错了什么?我应该使用什么代码来获得相同的结果(因为当我在运行时破坏代码时,它会在我的数据集中进行适当的调整),但没有 Stata 无休止地计算无意义的东西的麻烦。
【问题讨论】:
-
您有一个question 等待反馈。礼貌的基本规则意味着你要注意这一点。另请参阅此链接:stackoverflow.com/help/someone-answers
-
问题是你的,不是 Stata 的。您的
replace语句自动暗示了一个循环:foreach循环暗示了相同计算的冗余重复。
标签: stata