그래프 그리기 09:= legend 꾸미기

이미지
// 범례를 좀 더 효과적으로 구성할 필요가 있을 때.... // 예를 들어, 유사항목들을 분리하고 그룹화하여 보여주고 싶을 때    legend(order( - "[Headcount Ratio]" 1 "only NPS" 2 "NPS+BP-indexed CPI" 3 "NPS+BP-indexed A-value" - "[Poverty Gap Ratio]" 4 "only NPS" 5 "NPS+BP-indexed CPI" 6 "NPS+BP-indexed A-value")  size(medium) rows(4) colfirst   ) // 빨간색 글자를 주의깊게 보시면 알 듯.... 

자릿수가 다른 일련번호 다루기

// 국내 패널자료들을 보면, 각 연차별 데이터를 일련번호를 붙이는데 01 02 03 .... 10 11 12 .... 이런 경우 순차적으로 작업하기 루프문을 돌리려면 여간 까다롭지가 않다....ㅠㅠ 이럴때 한 번 사용해 보기를....ㅋ foreach ss in 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 {   di  "1을 곱한 결과 == `=`ss'*1'  ,  그렇지 않은 경우  `ss'    " } // 예를 들어,  01인 경우,   `=`ss'*1'  의   의미는  01*1=1 // 따라서 그 결과로 숫자 1을 받을 수 있다. (stata returns 1 ).... ㅋ // 별거 아닌거 같지만, 나름 유용할 듯....

STATA: Loop문의 중요성..

* 지금 아래의 코드처럼, 간혹 이렇게 길고 지루한 코드를 짜기 위해서 머리가 아픈 적은 누구나 있겠죠...  그 밑에 축약된 코드문이 있는데,.쭉 한 번 내려가 보도록 하죠, 내려가면서 그 규칙성을 한 번 생각해보면 좋아요!! ...gogo //28 replace income2031=0 if age_1999==28 //29 replace income2031=0 if age_1999==29 replace income2030=0 if age_1999==29 //30 replace income2031=0 if age_1999==30 replace income2030=0 if age_1999==30 replace income2029=0 if age_1999==30 //31 replace income2031=0 if age_1999==31 replace income2030=0 if age_1999==31 replace income2029=0 if age_1999==31 replace income2028=0 if age_1999==31 //32 replace income2031=0 if age_1999==32 replace income2030=0 if age_1999==32 replace income2029=0 if age_1999==32 replace income2028=0 if age_1999==32 replace income2027=0 if age_1999==32 //33 replace income2031=0 if age_1999==33 replace income2030=0 if age_1999==33 replace income2029=0 if age_1999==33 replace income2028=0 if age_1999==33 replace income2027=0 if age_1999==33 replace income2026=0 if age_1999==33 //34 replace income2031...

최근 연구 정보

1. Measuring Well-being and Progress     : OECD에서 최근 5-6년 전부터 주목하고 있는 주제 2. International Association for Research on Income and Wealth (IARIW)    http://www.iariw.org/  http://www.iariw.org/c2011oecd.php  2011 IARIW-OECD Conference on Economic Insecurity: Measurement, Causes, and Policy Implications  November 22-23, 2011

그래프 그리기 08:= 값라벨을 하나의 관측치에만 붙이기

이미지
// 단독직입적으로 시작합니다.... // 다음과 같은 자료가 있습니다. // 21개 등급(grd)별로 그 순위(gwon)가 있습니다. 여기서 보여지는 것은 한 개인만을 보여주고 있지만, 예를 들어 여러 명의 각 등급별 순위가 있는 그래프를 그리기 위한 것이 오늘 소개하는 내용입니다. 사실, 이러한 경우 범례(legend)를 이용하여 구분하는 것은 아래와 같이 매우 복잡합니다. 무슨 지하철 노선도 같네요...그게 아닌데 ㅠㅠ 그래서 각 관측치별로 값을 라벨로 넣어서 구분하는 방법도 있습니다... twoway  (connected gwon grd if model == "BASE" , sort mlabel(model) mlabp(12))  하지만, 이것도 여러 개를 그리면 너무 복잡해서리~~   twoway (connected gwon grd if model == "BASE" , sort mlabel(model) mlabp(12)) (connected gwon grd if model == "S1-21", sort mlabel(model)) ........ 그런데 이렇게 그리면 어떤가요?!!^.^  이렇게 하기 위해선 하나의 새로운 변수를 만듭니다. 이때, 21개 등급에 해당하는 관측치에만 값을 넣는게 핵심입니다. gen mymod = model if grd == 21 보시는 바와 같이, grd가 21인 경우에만 그래프의 라벨로 사용하고 싶은 값을 넣으면 됩니다.   그런다음, 다음과 같이 라벨로 쓸 변수로 새롭게 만든 변수를 이용하면 되죠^^ twoway   (connected gwon grd if model == "BASE", mlabel( mymod )  mlabp(3) sort)  (connected gwon grd if model == "S1-21", mlabel( ...

인용부호가 있는 목록 처리: 값라벨 매크로

// 목록을 처리할때, 가장(?) 어려운 것이 아마도 인용부호가 있는 경우일 것입니다. // 이러한 경우가 발생하는 경우는 스타타에서 값라벨이 여기에 해당합니다.      // 값라벨과 유사한 경우가 그래프의 레전드인데, 예전에 처리한 적이 있죠!!^^ // 여튼, 값라벨과 그래프의 레전드는 다음과 같은 형식입니다..   숫자1 "문자1" 숫자2 "문자2" ...... ==> 1 "임금" 2 "비임금" 3 "전체" ....... //다음과 같은 상황을 생각해 봅시다. // 값이 1 2 3 이 있는 변수 sim이 있는데  각각의 값라벨로 // 1일때, "모형1", 2일때 "모형2" 3일때 "모형3"을 설정해야하는 경우.... // 이런 경우 매크로를 짜봅시다....ㅋ   loc sname = ""   loc Model = "모형1 모형2 모형3"   loc ii 0   // 모델순번   foreach mysim of loc Model {     loc ++ii     loc sname = `"`sname' `ii' "`mysim'""'   // 이 부분이 어렵죠....ㅋ   }      // 이 루프가 끝나면, 목록이 만들어져 있을터이고, 그 목록을 확인하고 싶으면,  di `"`sname'"'      // 다음으로 그 목록을 값라벨로 설정해서, 변수 sim에 적용하고 싶다면....   lab def myname `sname'    // 여기서 위의 di `"`sname'"' 와 다르다는 것이 핵심..ㅋ   lab val sim myname 

파일목록 다루기

// 특정 폴더 안의 특정 혹은 모든 파일들의 목록을 구하거나 작업하고자 할때가 있죠.... // 물론, 모든 사람들이 그런 것은 아니지만....^^; // 아래의 syntax는 "D:\myfolder"라는 폴더 안에 Final_ 로 시작하는 모든 파일들의 이름들을 datafilez라는 로컬변수에 담으라는 말입니다. local datafilez: dir "D:\myfolder\" files "Final_*.dta" , respectcase  // dir 함수는 대소문자를 구분하지 못함. 그래서 respectcase이라는 옵션을 사용할 수 있습니다. di `"`datafiles'"'   // 이건 그 결과를 보여달라는 것이고.....  // 이 아래는 그 파일들을 모두 세로로 결합하라는 것입니다. clear foreach myfile of local datafiles {   di "`myfile'"   append using "D:\myfolder\\`myfile'" }