我在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_798
,v3
代表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_
数字。
有任何建议修复代码/数据吗?
答案 0 :(得分:1)
当缺少值时,可以执行以下操作:
completed
基本上,您用计数器service_request.results
中的值替换缺少的值。