통계공부/Stata

[Stata] 기본 명령어(9): merge(+append, joinby)

대학원생A씨 2021. 4. 22. 09:00
반응형

오랜만에 Stata 명령어 설명에 관한 포스팅을 작성하고자 한다. 요즘 신나리, 안재진(2014)의 논문을 따라 패널데이터를 분석해보는 포스팅을 준비하고 있는데, 해당 논문이 종단데이터를 사용하는지라 데이터 간의 병합이 필요하다. 데이터 병합을 위해 Stata에서는 append, merge, joinby라는 명령어를 쓸 수 있는데, 먼저 이들의 차이점을 소개한 뒤 이번 포스팅에서는 merge만을 설명하고자 한다.

 


 

1. append, merge, joinby의 차이점

append, merge, joinby 세 명령어는 모두 데이터셋을 병합할 때 사용한다는 점에서 공통점을 보인다. 하지만 이들 세 명령어에는 기능의 차이를 보이는데, 그 차이점에 대해 Stata 측에서는 다음과 같이 설명하고 있다.

 

  Append기본 변수에 관측치를 추가하는 경우에 사용하는 명령어로, 기존 데이터셋과 병합할 데이터셋의 변수가 동일하지 않아도 된다. append를 예를 들어, 기존 데이터셋에 조사참여자를 더 모집하여 데이터를 추가할 경우 사용할 수 있다.

append에 대한 그림설명(출처: https://www.stata.com/manuals/u23.pdf) 

반면 merge는 기존 데이터셋에 병합할 데이터를 옆으로 붙여주는 방식으로, 기존 관측치에 변수를 추가하는 경우에 사용할 수 있는 명령어다. merge는 예를 들어, 패널 데이터에서 1차년도 자료와 2차년도 자료를 병합할 때 사용할 수 있다.

 

merge에 대한 그림설명(출처: https://www.stata.com/manuals/u23.pdf) 

마지막으로 joinby데이터셋을 수직, 수평으로 병합하는 경우로 데이터셋을 수평으로 합친다는 점에서 merge와 유사하지만 조합이 가능한 경우 데이터셋을 수직으로 확장한다는 점에서 차이를 보인다. 이렇게 설명하면 이해하기 어려울 수 있으므로, 예를 들어 설명하자면 가구 내 부모와 자녀에 대한 개별 데이터셋을 합칠 때, 즉 가구ID를 기준으로 각 부모와 결합된 자녀의 데이터셋을 병합할 때 joinby 명령어를 사용하는 것이 적합하다.

 


 

2. merge

merge 1:1[m:1, 1:m, m:m] 변수명 using 파일명 : using 뒤에 오는 파일과 기존 파일을 지정 변수를 기준으로 1:1[m:1, 1:m, m:m]의 방식으로 합치는 명령어
merge 1:1 변수명 using 파일명, keepusing(변수명) : using 뒤에 오는 파일에서 가져올 변수를 지정하는 옵션(옵션을 적지 않는 경우 모든 변수를 가져온다.)
merge 1:1 변수명 using 파일명, nogenerate : 데이터 병합시 발생하는 _merge 변수 생성하지 않는 옵션
merge 1:1 변수명 using 파일명, nolabel : 병합할 파일의 기존 변수라벨을 사용하지 않음을 지정하는 옵션

 

merge는 앞선 설명에서와 같이 기존 데이터셋에 새로운 데이터셋의 관측치를 추가하는 명령어다. 이 때 1:1, m:1, 1:m, m:m 네 가지 방식의 결합이 가능한데 데이터를 병합할 기준 변수에 대해 기존 데이터셋과 병합할 데이터셋의 대응이 어떻게 이루어졌는지를 기준으로 선택해야 한다. 쉽게 말해, 내가 두 데이터를 ID라는 변수를 기준으로 병합한다 해보자. 이 때 기존 데이터셋과 병합 데이터셋에 ID11로 대응되어 있다면 1:1을 택하면 된다. 반면 내가 병합할 데이터가 가구 데이터와 가구 구성원 데이터, 1:m으로 대응된 데이터라면 1:m의 방식을 채택해야 한다.

 

예시를 위해, 한국아동패널 2차년도 자료와 3차년도 자료를 merge할 것이다. 이를 위한 syntax는 아래와 같다.

 

merge 1:1 N_ID using “PSKC_w3_2010.dta”

명령어를 실행하면 다음과 같이 데이터 병합이 성공적으로 되었음을 알 수 있다.

참고로 위의 명령어를 실행하기 위해서는 cd라는 명령어를 이용하여 working directory를 데이터가 저장되어있는 폴더로 지정해야 한다. ☞ cd 명령어에 대한 포스팅

 

[Stata] 기본 명령어(1): help, cd, set more off, sysuse

이번 포스팅에서는 Stata의 기본 명령어에 대해 알아보고자 한다. 여기서 말하는 기본 명령어란, Stata 프로그램의 세팅과 관련된 명령어와 데이터(혹은 변수) 조작과 관련한 기초적인 명령어들을

graduationplease.tistory.com

 

지금은 아무런 옵션도 지정하지 않았기 때문에 변수 목록을 보면 _merge라는 변수가 생성이 되었으며, 데이터 간 병합에 대한 결과가 기록되어 있다. 이것이 불필요하다면 위에서 언급한 nogenerate 옵션을 사용하면 된다. 그리고 병합하는 데이터의 모든 변수를 불러오는 것이 번거롭다면 내가 붙이고 싶은 변수만 옵션에 기입하여도 된다.

 

merge 1:1 N_ID using “PSKC_w3_2010.dta”, nogenerate keepusing(EMt10prs001- EMt10prs011)

nogenerate 옵션을 사용하여 변수목록에 _merge 변수가 없고, 병합할 데이터에서 연구자가 지정한 변수만 선택적으로 추가되었음을 확인할 수 있다.

반응형