[Stata] 패널 데이터 연도별 머지 How to merge Panel Data

패널 데이터를 머지한 형태로 제공해주는 패널들도 있지만, 연도별로 주는 곳들도 많은 것 같다. 이 경우에는 직접 데이터를 머지해야 한다. 일반적으로 시계열(Time-series)  분석은 Stata로 하므로 데이터 머지 방법도 Stata로 해야 한다. 인터넷에 한번에 정리된 포스트가 없어서 정리해봄! 실습은 여성가족패널로 진행해보았다. Stata 버전으로 다운 받으면 아래처럼 dta 형식의 파일이 있다. n, np, h 등은 패널에서 아마 설명을 해줄텐데 여기서는 h(household), p(person), np(new person; 해당 년도에 신규 진입  패널)을 뜻한다. 

1단계: 데이터 뷰어로 변수명 확인하기 

  • 패널 데이터를 다운받아서 일단 데이터가 어떻게 생겼는지를 확인해야 한다. 변수명이 통일되어 있는지 여부를 확인해주는 것, 그리고 year 변수가 있는지 여부를 확인해준다. 
  • 데이터 뷰어로 열어보면 위처럼 H401 XXX 이렇게 생겼는데 이게 4차년도여서 앞에 4가 붙어있는 것이다. 6차년도에는 H601 XX 이렇게 되어 있다. 그래서 같은 변수명으로 통일 작업이 필요하다는 것을 알 수 있다. 그리고 year 변수가 없으므로 생성해줘야 한다는 것도 알 수 있다. 
  • 참고로, 위에 보면 데이터 뷰어에서 ‘라벨’로 표시가 되는데 이걸 실제 코딩된 숫자로 보고 싶으면 오른쪽 마우스 클릭 후에 위의 옵션(Hide all value labels)을 선택하면 된다. 

2단계: 분석 대상 변수만 남기기 

  • 모든 변수를 다 분석할 것이 아니고, 변수명 통일을 다 할 필요도 없으므로 연구에서 활용할 분석대상 변수만 남기는 작업을 진행한다. 
  • 변수 남기는 것은 keep(이것만 남긴다) or drop(이것만 지운다) 명령어를 통해서 할 수 있는데, 한번 지우면 되돌이키기 어려우므로 원자료를 복사해둔 후에 새로운 파일에서 진행하는 것이 좋다. 
  • 내가 사용하는 Stata15 버전에서는 Keep Drop을 명령어가 아니라 Variables 창에서 바로 선택해서 할 수 있기는 하다. 하지만 비슷한 명령을 여러 패널에서 반복해줘야 하므로 명령어로 한번에 하는 것이 좋다. 사용할 변수명을 Code book에서 한번에 모아두고 진행하면 된다. 
  • 나의 경우는 엑셀 파일에 사용할 변수 목록을 쭉 입력해두고, concatenate 명령어를 통해서 쭉 통합해서 keep ~ 해서 일괄적으로 작업했다. 

3단계: 변수명 통일하기 

  • 이제 변수명을 실질적으로 통일시켜주는 단계이다. rename명령어를 사용해서 각 연도별로 다른 변수명을 통일시켜준다. 다르면 제대로 머지가 되지 않기 때문에 제대로 확인해야 한다.
  • 명령어는 rename 기존변수 통일할변수 이렇게 간단하다. 
  • 조금이라도 변수명 통일을 빠르게 하는 TIP! 아래와 같이 통일변수명, 웨이브별 변수명을 아래와 같이 엑셀 시트에 작성해둔 후에, 열 하나를 더 만들어서 concat(“rename”, 기존변수명, ” “, “통일할 변수명”) 함수를 통해서 쭉 채워준다. 그리고 이 명령어를 복붙만 해주면 일괄 작업 끝! 비슷한 방식으로 통일할 웨이브 모두에 적용해주면 된다 😉

4단계: year 변수 만들기 

  • 다음 단계로는 각 패널 데이터를 열어서 YEAR 변수를 생성해주어야 한다. 참고로 Stata dta 파일을 열때 복잡하게 명령어 할 것 없이 그냥 파일을 stata 화면에 드래그 하면 열린다. 
  • 드래그하면 use~ 명령어가 사용되면서 파일이 열린다. 여기에 명령어 “generate year=연도“를 입력하고 덮어쓰기를 진행한다. 저장은 save 명령어 사용할 것 없이 Ctrl+S 단축키를 이용하면 쉽게 할 수 있다. 이렇게 모든 연도별 데이터에 연도 값을 지정해준다. 

5단계 본격 데이터 합치기 

  • 이렇게 데이터를 다 준비시켜주고 나면, 본격적으로 데이터를 합치는 단계이다. 데이터 머지는 ‘세로로’ 할수도 있고, ‘가로로’ 할수도 있다.
  • [1] row 기준으로 하는 경우: 변수를 새로 추가하는 경우 (횡단) ex. household 데이터와 person 데이터를 합치기  => append 명령어 활용
    **append 명령어의 경우 가끔 변수의 형식이 동일하지 않다면서 에러가 뜰 수 있는데, 이럴 때는 뒤에 , force 를 덧붙여주면 처리된다. 
append using "데이터명.dta"

  • [2] column 기준으로 하는 경우: 연도를 추가하는 경우 (종단) ex. 웨이브별 통합하기 => merge 명령어 활용
    **m:m 명령을 통해서 한 가구당 개인이 여러명 있을 때 매칭시킬 수 있다. 
merge m:m 기준변수 using "데이터명.dta", sort

이렇게 가로로, 세로로 합치고 나면 내가 원하는 변수들의 종단 데이터를 얻을 수 있다! (휴) 복잡해보이지만 그래도 종단 분석을 하려면 stata로 하는 것이 그나마 가장 쉽다고 하기 때문에.. 차근차근 따라해보는 것이 좋을 것 같다. 이렇게 이번 포스팅은 끝! 

You may also like...

1 Response

  1. KK says:

    안녕하세요, 혹시 variable 별로 나눠진 stata 패널 데이터셋도 같은 방법으로 병합이 가능할까요?

Leave a Reply