我正在尝试将一些数据集分成两部分,在这样的文件上运行循环:
cd C:\Users\Macrina\Documents\exports
qui fs *
foreach f in `r(files)' {
use `r(files)'
keep id adv*
save adv_spa*.dta
clear
use `r(files)'
drop adv*
save fin_spa*.dta
}
我不知道循环中的内容是否正确写入但重点是我得到了错误:
invalid '"e2.dta'
其中e2.dta是文件夹中的第二个文件。此消息是指循环还是循环内部的内容?哪里出错了?
答案 0 :(得分:1)
你想要像
这样的行use "`f'"
不是
use `r(files)'
鉴于fs
(从SSC安装,正如您应该解释的那样)返回r(files)
作为 所有文件 的列表,而您需要依次为use
每个 (不是一次性)。
错误消息提供了信息:use
对它看到的第二个文件名感到困惑(因为只有一个文件名有意义)。其他文件名将被忽略:use
一旦出现明显错误就会失败。
顺便提一下,请注意,如果任何包含空格,将""
放在文件名周围仍然是必不可少的。