Stata:将foreach与by结合起来

Stata: combine foreach with by

我的数据中有一些变量 issue 的缺失值。我正在尝试估算最近的 issue 值(对于该主题,由 id1 和 id2 标识),如果有的话。如果所有过去的 issue 值都丢失了,我希望代码将当前值保留为丢失。

我尝试了下面的代码,但是 Stata 说 foreach 不能与 by 组合。

bys id1 id2 (date): foreach v in 1(1)_n {
replace issue[n] = issue[n-v] if !missing(issue[n-v]) and missing(issue[n])==1
}

有没有办法不使用 foreachby 来做到这一点?

尝试循环观察是完全没有必要的,因为 Stata 以任何方式做到了这一点。

如果您只想使用最近的非缺失值,您可能需要这样:

clonevar issue, generate(clone) 
bys id1 id2 (date): replace issue = clone[n-1] if missing(issue) 

除了您标记的错误外,请注意您的代码中的以下错误:

foreach v in 1(1)_nforeach 不会用 in 扩展 numlist;它也不会为您评估 _n

replace issue[n]:该位置不允许有下标; replace issue 无论如何都意味着同样的事情。

issue[n-v]:您需要那里的本地参考资料。

and 不是关键字:如果您想要合乎逻辑的 "and"

,则需要 &

n 大概是 _n

的错字

另请参阅此 FAQ on replacing missing values