我知道我的标题在tokenize
命令被指定为字符串的意义上令人困惑。
我有许多文件夹,其中包含大量、分离、名称错误的 Excel 文件(其中大部分是从 ahe 网站上抓取的)。手动选择不方便,需要依靠Stata扩展宏功能local :dir
来读取。
我的代码如下所示:
foreach file of local filelist {
import excel "`file'", clear
sxpose, clear
save "`file'.dta", replace
}
这样的代码将生成许多新dta
文件,因此目录中充满了这些文件。我更喜欢为第一个文件创建一个新的数据文件xlsx
,然后append
在foreach
循环内创建其他文件。所以本质上,有一个if-else
内部循环。
我们需要一个filelist
刚刚创建的宏的索引,这样我们就可以编写如下内容:
token `filelist' // filelist is created in the former code
if "`i'" == `1' {
import excel "`file'",clear
}
else {
append using `i',clear
}
我知道我的代码效率低下且容易出错:表达式的语法token 'filelist'
也不正确(假设它filelist
不是字符串)。但是,我仍然想弄清楚我的伪代码背后的基本结构。
我怎样才能更正我的代码并使其工作?
另一种更有效的方法受到高度欢迎。