2017-10-07 61 views
0

我想將一個文件夾中的多個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 
    } 
} 

回答

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. 如何使用foreach:在of語法要求的關鍵字。如果沒有local作爲關鍵字,foreach不會查看本地宏。

  2. 在循環內使用循環索引。您將i設置爲1並忽略您的循環索引。這是合法的,但大概不是你想要的,否則你只是在同一張紙上閱讀10次。

可以使用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文件只會讓您需要一個關於如何組合它們的策略,但這將是一個單獨的問題。

+0

謝謝你,我正在運行1/10來進行試運行。謝謝你的提示,我一直在從舊代碼看前一個人寫的,這都是「foreach」。 :) –