Loops Foreach循环以导入多个数据库

Loops Foreach循环以导入多个数据库,loops,foreach,stata,dbf,Loops,Foreach,Stata,Dbf,我有多个.dbf文件,希望一次导入一个,更改变量的名称,并另存为.dta文件。包含.dbf文件的文件夹也包含我希望Stata忽略的其他文件 每个dbf文件都被命名为本地宏mylist中列出的选项之一,后跟\u ward\u CTS.dbf。例如,B_ward_CTS.dbf就是其中一个文件 我的代码如下: program drop _all macro drop _all set more off cd "/Users/slums-india/cleaning/maps processing/W

我有多个.dbf文件,希望一次导入一个,更改变量的名称,并另存为.dta文件。包含.dbf文件的文件夹也包含我希望Stata忽略的其他文件

每个
dbf
文件都被命名为本地宏
mylist
中列出的选项之一,后跟
\u ward\u 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

} 
我似乎无法让这个循环运行。我得到的错误是无效的“文件”


我做错了什么?

您需要删除循环中的第一行,更改
文件中的
并添加引号:

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 
} 

我刚刚编辑了我的代码,以包含它的顶部部分,该部分已经包含了我的工作目录。我忘了包括错误是无效的“文件”。我刚刚编辑了我的答案。将来,请让我们知道确切的问题/错误以及发生的位置。现在我得到错误文件“file”\u ward\u CTS.dbf未找到,则该文件不在目录中。或者在文件中使用“而不是”。复制我的代码并重试。我的代码相同。你认为这和mylist部分有关吗?我是否应该在我的列表中列出每个病房的B_ward_CTS.dbf?