2017-10-07 16 views
0

複数のExcelファイルをフォルダからStataにインポートし、別々のdtaファイルとして保存したいとします。毎年4四分の1の価値があります。各四半期には60枚あります。それぞれのシートを個別にインポートしたいと思います。複数のファイルを保存するループ

など。

2004第1四半期には、ループのためにそれを書くための方法はありSheet60-が2004Q60

に保存するようにしている第1四半期

2004 2004Q11.dta

に保存するシート1-あり速度?

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構文はキーワードが必要です。 foreachlocalのないローカルマクロをキーワードとして検索しません。

  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 
    } 
} 

必ずしも確認できません。あなたが60を書かない理由は、明らかではない。

別々の.dtaファイルを作成すると、それらを組み合わせる方法についての戦略が必要になりますが、それは別の質問になります。

+0

ありがとうございました、私は試行を実行するために1/10を実行していました。 forvalのチップをありがとう、私は以前の男が書いた古いコードから探していた、それはすべて "foreach"でした。 :) –

関連する問題