循环文件时出错,-fs-命令

时间:2018-03-26 14:55:43

标签: loops foreach split stata

我正在尝试将一些数据集分成两部分,在这样的文件上运行循环:

 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是文件夹中的第二个文件。此消息是指循环还是循环内部的内容?哪里出错了?

1 个答案:

答案 0 :(得分:1)

你想要像

这样的行
use "`f'"

不是

use `r(files)' 

鉴于fs(从SSC安装,正如您应该解释的那样)返回r(files)作为 所有文件 的列表,而您需要依次为use 每个 (不是一次性)。

错误消息提供了信息:use对它看到的第二个文件名感到困惑(因为只有一个文件名有意义)。其他文件名将被忽略:use一旦出现明显错误就会失败。

顺便提一下,请注意,如果任何包含空格,将""放在文件名周围仍然是必不可少的。