我的数据对变量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
使用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);}
的情况下执行此操作?
答案 0 :(得分:1)
尝试循环观察是非常不必要的,因为Stata以任何方式这样做。
如果您想使用 最近的非缺失值,您可能需要这样:
clonevar issue, generate(clone)
bys id1 id2 (date): replace issue = clone[n-1] if missing(issue)
除了标记之外,请注意代码中的以下错误:
foreach v in 1(1)_n
:foreach
不会使用numlist
展开in
;它也不会为你评估_n
。
replace issue[n]
:该位置不允许下标; replace issue
无论如何都意味着同样的事情。
issue[n-v]
:你需要一个本地参考。
and
不是关键字:如果您需要合理的“和”,则需要&
n
可能是_n