매크로는 동일한 것을 반복해야 할 때 유용하게 쓰인다고 했지요. local 및 global command는 동일한 변수 반복과 조건을 정의할 때에 쓸 수 있었는데, for command는 동일한 command를 반복하는 것을 피하게 해줍니다.즉,
for varlist kc ki kg: egen mean_X=mean(X)
는 다음의 command들을 입력한 것과 동일합니다.
egen mean_kc=mean(kc)
egen mean_ki=mean(ki)
egen mean_kg=mean(kg)
varlist에서 지정된 모든 변수들이 X로 인식되어 egen command가 실행된 것을 볼 수 있습니다. 이를 확인하는 display command과 개별 command가 표시되지 않게하는 noheader option을 통해 다음과 같은 결과를 확인할 수 있습니다.
for varlist kc ki kg, noheader: display "Mean of X = " mean_X
Mean of kc = 72.536438
Mean of ki = 15.740885
Mean of kg = 20.606308
새로운 변수들에 대해 command를 실행시키고 싶을 때는 newlist를 사용하면 됩니다.
. for newlist ARG FRA USA : gen Xpop=pop if countryisocode=="X" & year==1995
numlist와 varlist를 같이 사용할 수도 있지요.
. for X in varlist kg cgdp: for Y in numlist 1990/1995: sum X if year==Y
각각은 :로 연결된 것을 볼 수 있습니다.
한편, STATA8부터는 for command가 foreach와 forvalue command로 대체되었는데요, foreach는 for varlist, forvalue는 for numlist와 동일하게 사용됩니다.
foreach var in kg cgdp {
egen mean_`var’=mean(`var’)
display “Mean of `var’ = ” mean_`var’
}
일 때, kg와 cgdp라는 변수에 대하여 평균값이 형성되고, 그 결과값이 창에 표시되겠지요.
foreach 매크로이름 in 변수1 변수2 변수3...
의 형태로 command가 이루어진 것을 볼 수 있습니다.
forvalues coomand도 비슷하게 사용할 수 있는데, 다음과 같이 /를 사용하여 범위를 지정할 수 있습니다.
forvalues t = 1980/1983 {
qui sum pop if countryisocode == "USA" & year == `t’
di "pop of country USA in `t’ is: " r(mean)
}
또한, 해당 범위 내의 모든 년도가 아니라, 5년에 한번에 해당하는 데이터를 사용하고 싶을 때에는 (5)를 가운데에 넣어주면 됩니다.
forvalues t = 1980(5)1990 {
qui sum pop if countryisocode == "USA" & year == `t’
di "pop of country USA in `t’ is: " r(mean)
}
levelsof countryisocode
foreach ctr in `ctries' {
foreach yr in `years' {
sum pop if country == "`ctr'" & year == `yr'
local `ctr'`year' = `r(mean)' } }
해당 예시에 따른 결과창은 주어진 dataset에 있는 인구 정보를 국가와 년도에 따라 요약해서 보여줍니다. 그리고 그 인구값을 결과값으로 갖는 매크로를 정의하지요 (국가코드와 년도로 이루어진 각각의 매크로가 생성됩니다. ex.USA1990).
이 포스팅이 마음에 드셨다면 공감 버튼을 눌러주세요.
로그인 하지 않으셔도 공감하실 수 있답니다.
'방법론 공부 > 계량통계 방법론' 카테고리의 다른 글
[STATA] 관측치에 대해 고유값 부여 - gen number=_n, _n, _N (0) | 2015.03.10 |
---|---|
[STATA] 변수 정렬 및 관리 - sort, tab, gen, egen, ren (0) | 2015.03.10 |
[STATA] STATA에서의 매크로(1) - local, global (0) | 2015.03.09 |
[STATA] STATA 관련 파일 확장자들 - dta, do, log (0) | 2015.03.07 |
[STATA] set memory, set more on/off, set seed - 데이터 메모리 및 출력 설정 (0) | 2015.03.07 |