라벨이 목록인 게시물 표시

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

// 목록을 처리할때, 가장(?) 어려운 것이 아마도 인용부호가 있는 경우일 것입니다. // 이러한 경우가 발생하는 경우는 스타타에서 값라벨이 여기에 해당합니다.      // 값라벨과 유사한 경우가 그래프의 레전드인데, 예전에 처리한 적이 있죠!!^^ // 여튼, 값라벨과 그래프의 레전드는 다음과 같은 형식입니다..   숫자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'" }

특정 문자열을 포함한 변수들만 처리하기

// 예를 들어, 이런 경우가 있죠... // e_k 라는 문자열이 들어간 변수는 모두 금액변수인데, 그 단위가 "원"인데, 이런 변수들을 모두 "만원"단위로 바꾸고 싶은 경우.. 일일히 그 변수를 찾아서 바꾸기 귀찮을때.... lookfor e_k   // 이렇게 실행하면, 그 결과, 정확하게는 변수목록을 스타타는 macros로 문자열로 반환함..... return list   // 요걸로 확인해도 되고... 여기서 확인해 보면, 매크로 이름은  r(varlist) loc mylist = r(varlist)    // 결과를 받아서 로컬로 지정하고..           if "`mylist'" == "." {  // 해당변수가 아주 없는 경우의 결과값....               di  "찾는 문자열을 포함한 변수가 없습니다."           }           else {        // 최소 1개 이상 있는 경우             foreach myitem of loc mylist {                 replace `myitem' = `myitem'/10000             }           } ~~ 끝...ㅋ 즐거운 여름 휴가를 보내시길....~~

데이터의 변수이름과 라벨을 받아서 목록으로 만들기

* 오늘은 내가 갖고 있는 데이터에 있는 변수명과 그 설명인 라벨을 하나의 목록으로 만드는 것을 해 보겠습니다. * 사실, 이것은 스타타 프로그램에서는 언제든 확인할 수 있는 것이기에 큰 필요성이 없어 보이지만, 가끔은 여러 개의 파일의 통합작업을 위해 필요한 경우가 있습니다. * 여튼 필요한 것 같으면 내용을 보시길~~ ㅋ // 먼저, 파일명이 mydata.dta // 그 안에 있는 변수로  var1 var2 var3 이 있다고 하자...(없으면 말고...ㅋ) // 변수라벨로 각각  변수하나, 변수둘, 변수셋 이라고 하자.... loc myvarname = ""   // 변수명 목록을 만들기 위한 loc myvarlabel = "" foreach vv of varlist  _all  {   // 위에서 포함된 변수를 알고 있지 못한 경우 모든 변수를 지정     loc mylab :   var lab `vv'     loc myvar = "`vv'"      // 이건 사실 불필요할 수도 있지만.....    loc myvarname = "`myvarname' `myvar'"    loc myvarlabel = "`myvarlabel' `mylab'" }    // 이러면 끝~~ // 확인해보고 싶죠...!! di  "`myvarname'" di "`myvarlabel'" // 이렇게 해서 만든 목록으로 필요한 곳에 뿌릴수도 있고, 어떤 작업을 할 수도 있겠죠!! // 참고로 변수의 저장유형을 목록으로 만들고자 한다면... loc mytype: type 변수명 // 포맷목록도 원한다면,,, loc myfmt: format 변수명   * 쉽죠 잉~~!

변수 안에 있는 값들을 목록으로 받아내기

foreach mysex in 1 2  {  // 성별 루프    forvalues myeact = 11(1)15   {  // 종사상지위별 루프         // 성과 종사상지위에 따른 집단 내 구성원들의 연령구성은 다양할 것임.       // 그래서 각 집단 내 구성원들의 연령 목록이 필요함^^       levelsof realage if gend == `mysex' & eactpp == `myeact' , local(myages)       foreach myage of local myages  { // 연령          svy: mean pen_part if gend == `mysex' & eactpp == `myeact' & realage == `myage'               }  // 연령    }  // 종사상지위 }  // 성별