【问题标题】:Loop to append several .dta files循环附加几个 .dta 文件
【发布时间】:2017-01-17 02:45:00
【问题描述】:

我对 stata 比较陌生,我需要将几个 .dta 文件一起附加到一个数据集中。

我有一个名为 2015 的文件夹,文件如下所示...

jan_2015.dta 
feb_2015.dta 
mar_2015.dta 

...等等直到dec_2015

我尝试了以下代码:

cd C:\Users\TOSHIBA\Desktop\Lender_List\Compiled\2015

local mylist jan_2015 feb_2015 mar_2015 apr_2015 may_2015 jun_2015 jul_2015 aug_2015 sep_2015 oct_2015 nov_2015 dec_2015

foreach filename of local mylist {
  use `var'_2015
  append using "jan_2015.dta"
}

但是stata的输出显示file _2015.dta not found

【问题讨论】:

    标签: loops append stata


    【解决方案1】:

    无需循环:append 可以获取您可以使用fs 获取的文件列表:

    ssc install fs
    cd C:\Users\TOSHIBA\Desktop\Lender_List\Compiled\2015
    clear
    fs *_2015.dta
    append using `r(files)'
    

    如果您出于某种原因仍然渴望按名称循环文件:

    cd C:\Users\TOSHIBA\Desktop\Lender_List\Compiled\2015
    clear
    foreach filename in `=lower("`c(Mons)'")' {
     append using "`filename'_2015.dta"
    }
    

    您的代码的主要问题是本地宏 lname 是文件名,但是您取消引用名为 var 的东西,它的计算结果为空,因此 Stata 找不到名为 _2015.dta 的文件并抱怨。第二个问题是您的循环似乎试图打开每个月的文件并将一月份的数据附加到它。这听起来不像你的想法。

    【讨论】:

    • @nabilah 这有帮助吗?
    • 嗨 Dimitriy,这非常有效。非常感谢!
    • @nabilah 然后请使用左侧的复选标记选择它作为答案。
    猜你喜欢
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多