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
}
有没有办法不使用 foreach
和 by
来做到这一点?
尝试循环观察是完全没有必要的,因为 Stata 以任何方式做到了这一点。
如果您只想使用最近的非缺失值,您可能需要这样:
clonevar issue, generate(clone)
bys id1 id2 (date): replace issue = clone[n-1] if missing(issue)
除了您标记的错误外,请注意您的代码中的以下错误:
foreach v in 1(1)_n
:foreach
不会用 in
扩展 numlist
;它也不会为您评估 _n
。
replace issue[n]
:该位置不允许有下标; replace issue
无论如何都意味着同样的事情。
issue[n-v]
:您需要那里的本地参考资料。
and
不是关键字:如果您想要合乎逻辑的 "and"
,则需要 &
n
大概是 _n
的错字
我的数据中有一些变量 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
}
有没有办法不使用 foreach
和 by
来做到这一点?
尝试循环观察是完全没有必要的,因为 Stata 以任何方式做到了这一点。
如果您只想使用最近的非缺失值,您可能需要这样:
clonevar issue, generate(clone)
bys id1 id2 (date): replace issue = clone[n-1] if missing(issue)
除了您标记的错误外,请注意您的代码中的以下错误:
foreach v in 1(1)_n
:foreach
不会用 in
扩展 numlist
;它也不会为您评估 _n
。
replace issue[n]
:该位置不允许有下标; replace issue
无论如何都意味着同样的事情。
issue[n-v]
:您需要那里的本地参考资料。
and
不是关键字:如果您想要合乎逻辑的 "and"
&
n
大概是 _n