Цикл Foreach для импорта нескольких баз данных - PullRequest
0 голосов
/ 26 июня 2018

У меня есть несколько файлов .dbf, которые я хочу импортировать по одному, изменить имя переменной и сохранить как файл .dta. Папка, содержащая файлы .dbf, содержит и другие файлы, которые я бы хотел игнорировать Stata.

Каждый из файлов dbf называется одним из параметров, перечисленных в локальном макросе mylist, за которым следует _ward_CTS.dbf. Например, B_ward_CTS.dbf является одним из файлов.

Мой код следующий:

program drop _all
macro drop _all
set more off
cd "/Users/slums-india/cleaning/maps processing/Ward Point 
Maps/Output"
clear

local files : dir "/Users/slums-india/cleaning/maps processing/WardPoint 
Maps/Output" files "*.dbf"

local mylist B C D E FN FS GS HE HW KE

foreach file of local mylist  {

use 'file'_ward_CTS.dbf 

/*import database*/
import dbase "'file'_ward_CTS.dbf", clear

/*rename CTS number variable*/
rename cts$V4 cts_number

save "/Users/slums-india/cleaning/sra/temp/'file'_ward_CTS.dta", replace

} 

Кажется, я не могу запустить этот цикл. Ошибка, которую я получаю, является недействительной 'file'.

Что я делаю не так?

1 Ответ

0 голосов
/ 26 июня 2018

Вам необходимо удалить первую строку в цикле, изменить ' в file и добавить кавычки:

foreach file of local mylist  {
    /*import database*/
    import dbase "`file'_ward_CTS.dbf", clear

    /*rename CTS number variable*/
    rename cts$V4 cts_number

    save "/Users/slums-india/cleaning/sra/temp/`file'_ward_CTS.dta", replace 
} 
...