Foreach循环导入多个数据库

Foreach loop to import multiple dbases

我有多个 .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'.

我做错了什么?

您需要删除循环中的第一行,将 ' 更改为 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 
}