循环以保存多个文件

时间:2017-10-07 06:10:30

标签: stata

我想将一个文件夹中的多个Excel文件导入Stata,并将它们另存为单独的dta文件。每年有4个季度的床单。每个季度内有60张。我想单独导入每张纸。

E.g。

  

2004年第1季将第1页保存到2004Q11.dta

     

2004年第1季有Sheet60-保存到2004Q60

有没有办法在循环中写入速度?

local quarter q1 q2 q3 q4
local i= 0
foreach q of quarter {
    foreach a of numlist 1/10 {
        import excel "2012`quarter'data", sheet("Sheet`i'") clear
        save "2012`quarter'`i'.dta", replace
    }
}

1 个答案:

答案 0 :(得分:0)

local quarter q1 q2 q3 q4
local i= 0
foreach q of quarter{
foreach a of numlist 1/10 {
import excel "2012`quarter'data", sheet("Sheet`i'") clear
save "2012`quarter'`i'.dta", replace
}
}

这里有一些关于

的混淆
  1. 如何使用foreachof语法需要关键字。 foreach在没有local作为关键字的情况下,无法查看本地宏。

  2. 在循环内使用循环索引。将i设置为1并忽略循环索引。这是合法的,但可能不是你想要的,否则你只需要在同一张纸上阅读10次。

  3. 可以在这里使用foreach,但使用forval可以更轻松地完成所有循环。

    forval q = 1/4 {
        forval a = 1/60 {
            import excel "2012q`q'data", sheet("Sheet`a'") clear
            save "2012q`q'`a'.dta", replace
         }
    }
    

    我必须检查这个。为什么你写10不是60不清楚。

    生成240个单独的.dta文件只会让您需要一个如何组合它们的策略,但这将是一个单独的问题。