2017-10-07 1 views
0

여러 Excel 파일을 폴더에서 Stata로 가져 와서 별도의 dta 파일로 저장하고 싶습니다. 매년 4/4의 가치가 있습니다. 각 분기마다 60 장이 있습니다. 각 시트를 개별적으로 가져 오려고합니다.여러 파일을 저장하는 루프

예.

2,004 분기 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을 쓰지 않는지 10은 명확하지 않습니다.

별도의 .dta 파일을 240 개 작성하면 결합 방법에 대한 전략이 필요하지만 별도의 질문이됩니다.

+0

고맙습니다. 시험을 치르기 위해 1/10을 달리고있었습니다. forval 팁 주셔서 감사합니다, 전 예전 사람이 쓴 코드에서 찾고 있었고 그것은 모두 "foreach"였습니다. :) –

관련 문제