한글 있는 STATA 파일을 R로 옮기기 economics

(이 팁은 osx나 linux에만 적용되는 것일 가능성이 있음)

STATA에서 한글은 윈도우의 기본 인코딩인 CP949 인코딩으로 취급한다. 

osx에서 이 인코딩을 사용하려면 반드시 한글 상위로 STATA를 구동해야 한다. 
이제 STATA 대신 R을 쓰려는 생각으로 가지고 있는 STATA 데이터를 보니 죄다 한글이 조금씩 섞여 있다. 

문제는 여기에 있는 한글 중에는 2byte 가 string 경계에서 1byte 단위로 잘린 것들이 있다는 것이다. 이 잘린 글자는 CP949로 인식하지 못하고 알 수 없는 인코딩이 되어 파일 전체가 CP949 파일이 아닌 것이 되어버린다. 

하지만 일종의 우회적 방법으로 이 문제를 해결할 수 있다. 윈도우즈에서는 어쩌면 한글이 죄다 cp949이므로 전혀 문제가 되지 않을 지도 모르겠다.  

  • STATA 데이터를 xml 로 export 한다. 
  • 이 xml을 utf8로 변환하되, 깨진 글자는 무시하도록 한다(iconv의 -c 옵션을 사용하자). 첫줄의 인코딩은 US-ASCII 에서 UTF-8 로 수동 수정해준다. 1byte 깨진 글자가 문제이므로 이 팁의 핵심은 깨진 글자를 무시하는 옵션에 있다고 할 수 있겠다. 

iconv -c -f cp949 -t utf8 test.xml > test.utf8.xml


  • 이 xml파일을 다시 STATA에서 import 한다. 당연히 한글은 죄다 깨진다. 
  • STATA dta 포맷으로 저장한다
  • 이 파일을 read.dta 로 R에서 읽는다. 그러면 한글 부분이 모두 제대로 옮겨진 것을 확인할 수 있을 것이다. 

++ 추가(2014.1.23): cp949 인코딩된 stata 파일을 실수로 그냥 R에서 읽었는데 제대로 읽어버리는 것 같다???

덧글

  • applefrogy 2014/07/10 15:43 # 삭제 답글

    안녕하세요. 포스팅 도움 많이 되었습니다. 감사합니다.
    그런데, 한글이 포함된 STATA 데이터 파일을 R로 읽는 다른 방법 혹시 아시나요?
    혹시 더 쉬운 방법이 있는가 싶어서요.
    @applefrogy
  • zonam 2014/07/31 00:36 #

    그냥 하면 안되나요? 사실 STATA는 한글을 처리하는게 아니라서, 2바이트가 절반 잘린 상황이 문제라고 생각하여 올린 포스팅인데, R에서 그냥 읽는 것 같습니다. 그런데 저도 확실히 체크한 것이 아니라 확신할 수는 없네요.
댓글 입력 영역



twitter

Twitter

MathJax