R을 많이 사용한다고는 하지만 개인적으로 STATA로 입문을 해서 그런지, STATA에 손이 더 많이 간다. 


이번 글은 기초적인 STATA 활용법을 다루도록 한다. 


STATA 14.2 맥용 버젼을 사용한다. 15도 나왔다고 하지만 업데이트가 될 때 마다 살 수 있는 프로그램은 아닌 것 같다...




데이터는 설명의 편의상 KGSS를 사용한다. (성균관대학교 서베이리서치센터에 접속하여 다운받을 수 있다)


2014년 데이터를 클릭하면 .sav 파일이 다운되는데 이는 KGSS가 SPSS 형식으로만 데이터를 제공하고있기 때문이다.


STATA의 경우 .sav 파일을 직접 열 수 있는 방법이 없기 때문에 다음과 같은 방법을 생각해볼 수 있다.


1) SPSS를 이용하여 파일을 연 후 .dta 파일 형태로 저장한다


2) R을 이용하여 .sav파일을 .dta 파일 형태로 저장한다


3) STATA 내에서 프로그램을 사용하여 .sav 파일을 연다



SPSS가 설치되어있지 않고 STATA의 기초적 활용이기 때문에 3번 방법을 사용하기로 한다.



0) .sav 파일 .dta 형태로 변환하기


usespss 프로그램을 다운받야아 변환할 수 있다. Stata 커맨드 창에 다음과 같이 입력하도록 하자.


search usespss


다음과 같은 화면이 뜰 것이다. 



usespss를 클릭 한 후 밑에 나오는 'click here to install'을 누르면 곧 설치가 된다. 


이제 간단하게 다음과 같은 명령어로 spss파일을 열 수 있다



usespss using "디렉토리명/파일명.sav"





안 된다....어째서 32비트 윈도우용으로만 만드는거지.....


어쩔 수 없이 다른 방법을 찾아보려고 했는데 R을 사용하거나  귀찮지만 SPSS를 다운받거나 SPSS를 설치한 동료에게 도움을 구하도록 하자.




1) 유니코드 적용하기


성공적으로 변환한 .dta파일을 열면 다음과 같은 화면이 나타날 것이다





하아...유니코드 적용이 되지 않기 때문에 한글로 된 변수명(label)이 다 깨져서 보인다.


OS 문제인지 STATA 버전 문제인지 정확하지 않지만 아무튼 해결해보자.


순서는 다음과 같다.


1) clear를 통해서 메모리를 지워준다

2) cd를 통해서 작업 폴더를 지정해준다

3) unicode encoding set를 통해서 변환활 언어 인코딩 설정을 해준다

4) unicode translate를 통해서 변환을 해준다.


코드는 다음과 같으며, 한 번에 입력하는 것이 아니라 매 줄 따로 입력해줘야 한다.


clear

cd "디렉토리"

unicode encoding set euc-kr

unicode translate *.dta, transutf8 invalid(ignore)


결과 창은 대략 이렇게 보일 것이다





성공적이다. 이제 다시 .dta 파일을 열면 변수 label에서 한글이 안 깨지고 잘 보이는 것을 확인할 수 있다.




분석도 하기 전에 파일 변환하는데 지쳤으니 본격적 데이터 클리닝 작업은 다음에 알아보도록 하자.






'STATA' 카테고리의 다른 글

STATA 노동패널 데이터 만들기 1  (4) 2018.05.28
STATA 입문하기  (0) 2018.01.04

노동패널은 참 어려운 데이터셋이다.


일단 통합 설문지가 600페이지가 넘어가니까....


그렇기 때문에 19년도에 걸치 자료를 구성하는데 시간의 대부분을 할애하게 된다. 


오늘은 그동안의 여러가지 삽질을 기억하자고 하는 의미에서 몇 가지 기록한다.


오늘 다룰것은 2가지


1) 앞에 숫자가 0으로 시작하는 경우 


2) 에러가 떠도 keep 및 drop 유지하기


시작해보자


1) 0으로 시작하는 경우


노동패널 가구 단위에서 변수는 h**변수명의 형태를 띄고 있다. 가령 가구원수 변수는 01년차에 h010150으로, 15년차에는 h150150으로 코딩되어있다. 


단년도 분석을 할 시에 큰 문제는 되지 않는다.


하지만 패널데이터를 만들기 위해서는 필요한 변수들만을 남겨놓고 머징(merging)작업을 해야된다.  이 때 일반적으로 forvalu 명령어를 통해서 loop를 만들게 되는데 멍청한 Stata는 앞에 숫자 0을 인식하지 못한다.


가령 


forval i = 1/19 {

use klips`i'h.dta, clear

keep h`i'0150

}


명령어를 입력하면 에러가 뜬다. 


file klips1h.dta not found


klips01h.dta는 있지만 klips1h.dta는 없기 때문에 문제가 나타나는 것이다.


이 때는 간단한 명령어 하나로 해결 가능하다.


forval i = 1/19 {

if length("`i'") == 1 local i 0`i'

use klips`i'h.dta, clear

keep h`i'0150

}


말 그대로 `i'의 길이가 1인 경우 local하게 i는 0`i'로 인식해라라는 명령어다.

local 명령어는 다음번에 기회가 있다면 더 자세하게 다뤄보자.

아무튼, 명령어 한 줄 덕분에 단순반복작업을 하는 어려움이 덜해진다.



2) 에러가 떠도 keep 및 drop 유지하기.

18차년도에 걸쳐서 반복해서 질문을 하지만 특정 년도에는 질문을 안 하는 경우도 있다.

가령 '현재 살고 계신 것으로 이사하게 된 동기'를 묻고있는 h**1420변수의 경우 11년차부터 조사를 하기 시작했기 때문에 h101420변수는 없지만 h111420변수는 있다. 물론 이럴 경우 그냥 11년차부터 시작하면 문제가 없지만 문제는 이 변수만 사용할 것이 아니기 때문에 발생한다.

01년도부터 18년도까지 가구 id (hhid)와 이사동기 (h**1420)만 남겨놓고 싶다고 가정해보자.

일반적인 명렁어 

forval i = 1/19 {

if length("`i'") == 1 local i 0`i'

use klips`i'h.dta, clear

keep hhid`i' h`i'1420 

}


는 먹히지 않는다. 

(위에 1번에서 사용한 "if length" 명령어가 사용됨)


variable h011420 not found


하....


당연하게도 hhid는 모든 년도에 일관되게 유지되지만 위에 설명한 것 처럼 h**1420 명령어는 11년차부터 조사되기 시작했기 때문에 1년차 이사 동기인 h010420은 없는 것이다.


이럴 경우에는 간단하게 capture 명령어로 해결 가능한 줄 알았다. 하지만 capture로 돌려본 결과 변수들이 없는 경우 drop되지 않는다는 것을 발견했다. 몇 번의 삽질을 반복 한 후 좋은 해결책을 다행히 찾았다.


우선 STATA 내 외부 프로그램인 isvar를 설치해야 한다.


ssc install isvar


큰 문제 없이 설치될 것이다.


(isvar를 삭제하고 싶으면 ado dir 명령어를 통해서 앞의 번호를 확인 한 후 ado uninstall [번호] 를 하면 된다)


isvar가 잘 설치되었다면 다음과 같은 명령어를 통해 필요한 변수들만 keep하는 것이 가능해진다. 


forval i = 1/18 {

if length("`i'") == 1 local i 0`i'

use klips`i'h.dta, clear

isvar hhid`i' h`i'1420 

keep `r(varlist)'

}


쨔잔-


된다.

당연히 이 상태로는 뭐 아무것도 한 것이 아니기 때문에 중간에 저장하라는 명령어 (save 파일이름`i'.dta, replace)를 넣어주는건 필수다.


이렇게 해서 노동패널을 이용하여 패널자료를 만들 수 있는 기초에 대해서 알아봤다.

아직 만들고있는 과정이기 때문에 새로 또 어떤 문제가 나타날지는 모르겠다.

시간 나면 계속해서 글 계속 써보자.



'STATA' 카테고리의 다른 글

SPSS 파일 변환 및 유니코드 적용하기  (0) 2018.06.04
STATA 입문하기  (0) 2018.01.04

STATA가 뭔지 설명은 생략합니다.


모르신다면 애초에 이 블로그에 들어오지도 않았겠지요.


STATA의 강점과 단점에 대한 설명 또한 생략합니다.


저도 잘 몰라요. 그냥 처음에 이걸로 통계 입문했기 때문에 이걸로 계속 하는 거에요.


요즘엔 R을 배우려고 노력하고 있습니다.


기회가 된다면 R에 대한 내용도 블로그 포스팅으로 올릴께요.



STATA 잘 못 합니다. 


그냥 내가 배운 거 잊지 않으려고,


혹여나 내가 해결한 어려움이 남에게도 도움이 될 까 하여 포스팅 합니다.



어려운거 물어보면 답 못 합니다.


그래도 최선을 다해서 같이 알아가려고 노력할게요.

'STATA' 카테고리의 다른 글

SPSS 파일 변환 및 유니코드 적용하기  (0) 2018.06.04
STATA 노동패널 데이터 만들기 1  (4) 2018.05.28

+ Recent posts