Мой код в 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
, который был предоставлен как ответ на мой предыдущий вопрос , для переименования переменных:
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
, z_798
для v3
, z_578
для v3
и т. Д.).
EDIT:
Кажется, что проблема будет в одном конкретном файле:
v1 v2 v3 v4 v5 …
Id 576 . 568 . …
2000 5958 937 949 161
2001 8471 1059 767 234
…
v3
станет z_
, а v5
станет также z_
, но не может, так как переменная z_ уже определена. Кажется, что некоторые id
номера отсутствуют.
Есть предложения по исправлению кода / данных?