修复循环中的“变量z_已定义”错误

时间:2018-11-19 23:17:30

标签: stata

我在Stata中的代码最初使用foreach循环打开每个文件,该循环导入文件同时擦除每个文件的第一行(此处未显示)。

这部分完成后,我的901文件将具有以下结构:

 v1 v2  v3  v4  v5  ...
    id  798 578 948 421
    2000    4567    8673    4806    9405    
    2001    5867    9001    5893    8790
    2002    6878    9233    5712    7678
    ...

然后,我使用这个嵌套的foreach循环(作为我的answer to a previous question提供)来重命名变量:

ds v*
local i 0 
foreach var in `r(varlist)' { 
    local ++i   
    tostring v`i', replace 
    local varname = strtoname(v`i'[1]) 
    rename v`i'  z`varname'
}

但是,我收到此错误消息:

  

“变量z_已定义”。

我运行了set trace on命令以确保问题出在rename命令上(因为z_尚未定义)。问题确实出在此命令上。相同的代码在处理另一组文件之前工作得很好,所以我不明白。

我希望我的代码采用第一行,在第一行的数字前添加z_作为前缀,并重命名我的变量(zid代表v1,{{ 1}}代表z_798v3代表z_578,依此类推)。


编辑:

问题似乎出在一个特定的文件中:

v3

v1 v2 v3 v4 v5 … Id 576 . 568 . … 2000 5958 937 949 161 2001 8471 1059 767 234 … 将变成v3,而z_也将变成v5,但是由于“已经定义了变量z_”而不能。似乎缺少一些z_数字。

有任何建议修复代码/数据吗?

1 个答案:

答案 0 :(得分:1)

当缺少值时,可以执行以下操作:

completed

基本上,您用计数器service_request.results中的值替换缺少的值。