我有多个.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
}
我似乎无法使此循环运行。我得到的错误是无效的“文件”。
我在做什么错了?
答案 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
}