循环以附加几个.dta文件

时间:2016-09-09 03:15:05

标签: loops append stata

我对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

1 个答案:

答案 0 :(得分:6)

无需循环: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的文件并抱怨。第二个问题是你的循环似乎试图打开每个月的文件并将1月的数据附加到它。这听起来不像你的想法。