Foreach循环导入多个数据库

时间:2018-06-26 13:58:42

标签: loops foreach stata dbf

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

} 

我似乎无法使此循环运行。我得到的错误是无效的“文件”。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

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