Stata:将foreach与by结合起来

时间:2016-06-23 17:20:37

标签: stata data-manipulation data-cleaning

我的数据对变量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使用int main(){ char *cmd = "Ping"; char *names[3]={"Ping","Stop","Go"}; int index = 3; int i; char *test; for (i = 0; i < 44; i++) { test = names[i]; if (!strcmp(cmd,test)) { index = i; } } printf("%s is index of %d\n",cmd,index);} 的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

尝试循环观察是非常不必要的,因为Stata以任何方式这样做。

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

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

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

foreach v in 1(1)_nforeach不会使用numlist展开in;它也不会为你评估_n

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

issue[n-v]:你需要一个本地参考。

and不是关键字:如果您需要合理的“和”,则需要&

n可能是_n

的拼写错误

另见FAQ on replacing missing values