2012-12-20 6 views
4

많은 수의 t- 테스트를 수행해야하며 전반적인 절차를 자동화하는 방법을 궁금합니다. 난 단지 다음과 같은 변수가 있다고 가정 은 : 그것은 가능해야한다 어떤 식 으로든 물론접두어에 따라 변수 이름을 반복합니다.

ttest int_ma=int_pa 
ttest est_ma=est_pa 
ttest tot_ma=tot_pa 

는 각 쌍은 고유의 접두사를 가지고 있다는 사실을 악용 :

int_ma est_ma tot_ma int_pa est_pa tot_pa 

내가 필요한 것은 계산하는 것이다 및 "_pa, _ma"접미사를 사용하지만 불행히도 각 변수 이름의 일부만을 참조하는 쉬운 방법을 찾을 수 없습니다 ..

도움을 주셔서 감사합니다.

답변

4

몇 가지 방법이 있습니다. 일반 목록에 foreach 루프를 사용합니다. 여기서 Stata가 루프에 로컬 매크로로 전달하는 세 접두사를 반복하고 및 ttest_ma_pa을 추가합니다. macro 도움말 파일로

* generate some data 
clear 
set obs 100 
foreach x in int est tot { 
    foreach y in ma pa { 
     generate `x'_`y' = runiform() 
    } 
} 

* -ttest- in -foreach- loop 
foreach x in int est tot { 
    ttest `x'_pa = `x'_ma 
} 

foreach 도움말 파일은 몇 읽는 가치가있다. 문법은 처음에는 약간 이상합니다 (R이나 Matlab보다 bash 스크립팅에 가깝습니다). 그러나 매우 유연합니다.

+0

대단히 감사합니다! – Stezzo

+2

'foreach'에 관한 튜토리얼은 _Stata Journal2 (2) : 202-222 (2002)에서 접근 할 수 있습니다. Stata에서'search foreach'를 타이핑하면 .pdf 버전으로 클릭 할 수있는 링크가 생깁니다. (여기서 "local-variables"태그는 Stata의 독창성이지만, 더 적절한 새로운 태그 인 "local-macros"를 소개할만한 명성이 없습니다.) –

+0

저는 종종 'foreach x of var '표기법. 'unab'도 도움이 될 수 있습니다. – Keith

관련 문제