제목
가구용 데이터를 횡으로 연도 간 머지하는 방법
작성부서
패널조사팀
등록일
2011/01/03
조회수
2898
내용
 

국민노후보장패널조사에서는 1~3차년도 가구 데이터를 횡으로 머지한 데이터(KReISHW)를 제공하고 있다. 이 경우 각 년도에서 진입차수가 같은 가구의 해당 진입차수 가구번호를 기준으로 머지한 뒤 서로 다른 진입차수의 데이터를 합쳐준다.


  예를 들어 1~3차년도 가구자료를 횡으로 머지하는 경우, 다음과 같은 절차를 따른다.


① 1~3차년도 가구자료에서 각각 진입차수 (hent)가 1인 케이스를 추출한 후 w01hid를 기준으로 정렬한 뒤 merge한다.

② 2차, 3차년도 가구자료에서 각각 진입차수 (hent)가 2이고 2차년도에 조사 참여한 케이스를 추출한 후 w02hid를 기준으로 정렬한 뒤 merge한다.

③ 3차년도 가구 자료에서 진입차수(hent)가 3이거나 2차년도 진입하였으나 2차년도에 조사 참여하지 않은 케이스를 추출한다.

④ 위의 결과 만들어진 세 개의 데이터를 종으로 합친다.



/* sas Merge문, Append문의 활용 */

data k01; set k.kreish01;      /*1차년도 데이터에서 필요한 변수만 추출 */

keep hid w01hid hent h01d001 h01d002;

if hent=1; run;              /*진입차수가 1인 케이스만 추출*/

proc sort; by hid; run;


data k02; set k.kreish02;      /*2차년도 데이터에서 필요한 변수만 추출 */

keep hid w02hid hent h02d001 h02d002;

if hent=1; run;              /*진입차수가 1인 케이스만 추출*/

proc sort; by hid; run;


data k03; set k.kreish03;     /*3차년도 데이터에서 필요한 변수만 추출 */

keep hid w01hid w02hid w03hid hent w01hsvy w02hsvy w03hsvy  h03d001 h03d002; 

if hent=1; run;              /*진입차수가 1인 케이스만 추출*/

proc sort; by hid; run;


data t1; merge k01 k02 k03; by hid; run;    /*진입차수가 1인 가구자료를 머지*/  


data k02_1; set k.kreish02;       /*2차년도 데이터에서 필요한 변수만 추출 */

keep hid w02hid hent h02d001 h02d002;   

if hent=2; run;                 /*진입차수가 2인 케이스만 추출*/

proc sort; by w02hid; run;


data k03_1; set k.kreish03;        /*3차년도 데이터에서 필요한 변수만 추출 */

keep hid w01hid w02hid w03hid hent w01hsvy w02hsvy w03hsvy  h03d001 h03d002;

if hent=2 & w02hsvy=1; run;     /*2차년도 조사 참여하고 진입차수가 1인 케이스만 추출*/

proc sort; by w02hid; run;


data t2; merge k02_1 k03_1;

by w02hid;run;                      /*진입차수가 2인 가구자료를 머지*/ 


data t3; set k.kreish03;

keep hid w01hid w02hid w03hid hent w01hsvy w02hsvy w03hsvy  h03d001 h03d002;

if hent=3 or (hent=2 & w02hsvy=2); run;   /*진입차수가 3이거나 2차년도 조사 참여하지 않은 진입차수가 2인 케이스 추출*/


data hw;

retain hid w01hid w02hid w03hid hent w01hsvy w02hsvy w03hsvy h01d001 h01d002 h02d001 h02d002 h03d001 h03d002;      /*변수 순서 정리*/

set t1 t2 t3; run;             /*각 진입차수별로 머지한 데이터를 종으로 합친다*/



/* spss Match문, Add문의 활용 */


get file='D:\KReIS\SPSS\kreish01.sav'

/keep=hid w01hid hent h01d001 h01d002.    /*1차년도 데이터에서 필요한 변수만 추출 */

sort cases by hid.

select if hent=1.                            /*진입차수가 1인 케이스만 추출*/

save out ='D:\KReIS\SPSS\k01.sav'

compressed.


get file='D:\KReIS\SPSS\kreish02.sav'

/keep=hid w02hid hent h02d001 h02d002.    /*2차년도 데이터에서 필요한 변수만 추출 */

sort cases by hid.

select if hent=1.                             /*진입차수가 1인 케이스만 추출*/

save out ='D:\KReIS\SPSS\k02.sav'

compressed.


get file='D:\KReIS\SPSS\kreish03.sav'         /*3차년도 데이터에서 필요한 변수만 추출 */

/keep=hid w01hid w02hid w03hid hent w01hsvy w02hsvy w03hsvy  h03d001 h03d002.

sort cases by hid.

select if hent=1.                             /*진입차수가 1인 케이스만 추출*/

save out ='D:\KReIS\SPSS\k03.sav'

compressed.


match files /file='D:\KReIS\SPSS\k01.sav'     /*진입차수가 1인 가구자료를 머지*/  

/file='D:\KReIS\SPSS\k02.sav'

/file='D:\KReIS\SPSS\k03.sav'

/by hid.

exe.

save out ='D:\KReIS\SPSS\t1.sav'

compressed.


get file='D:\KReIS\SPSS\kreish02.sav'

/keep=hid w02hid hent h02d001 h02d002.      /*2차년도 데이터에서 필요한 변수만 추출 */

sort cases by w02hid.

select if hent=2.                               /*진입차수가 2인 케이스만 추출*/

save out ='D:\KReIS\SPSS\k02_1.sav'

compressed.


get file='D:\KReIS\SPSS\kreish03.sav'           /*3차년도 데이터에서 필요한 변수만 추출 */

/keep=hid w01hid w02hid w03hid hent w01hsvy w02hsvy w03hsvy h03d001 h03d002.

sort cases by w02hid.

select if hent=2 & w02hsvy=1.           /*2차년도 조사 참여하고 진입차수가 1인 케이스만 추출*/

save out ='D:\KReIS\SPSS\k03_1.sav'

compressed.


match files /file='D:\KReIS\SPSS\k02_1.sav'     /*진입차수가 2인 가구자료를 머지*/ 

/file='D:\KReIS\SPSS\k03_1.sav'

/by w02hid.

exe.

save out ='D:\KReIS\SPSS\t2.sav'

compressed.


/*진입차수가 3이거나 2차년도 조사 참여하지 않은 진입차수가 2인 케이스 추출*/

get file='D:\KReIS\SPSS\kreish03.sav'

/keep=hid w01hid w02hid w03hid hent w01hsvy w02hsvy w03hsvy h03d001 h03d002.

sort cases by w03hid.

select if hent=3 or (hent=2 & w02hsvy=2).

save out ='D:\KReIS\SPSS\t3.sav'

compressed.

add files /file='D:\KReIS\SPSS\t1.sav'      /*각 진입차수별로 머지한 데이터를 종으로 합친다*/

/file='D:\KReIS\SPSS\t2.sav'

/file='D:\KReIS\SPSS\t3.sav'.

exe.

save out ='D:\KReIS\SPSS\hw.sav'

compressed.


get file='D:\KReIS\SPSS\hw.sav'           /*변수 순서 정리*/

/keep=hid w01hid w02hid w03hid hent w01hsvy w02hsvy w03hsvy h01d001 h01d002 h02d001 h02d002 h03d001 h03d002.

save out ='D:\KReIS\SPSS\hw.sav'

compressed.



/* stata Merge문, append문의 활용 */


clear

set mem 300m

use "D:\KReIS\STATA\kreish01.dta", clear

keep hid w01hid hent h01d001 h01d002     /*1차년도 데이터에서 필요한 변수만 추출 */

keep if hent==1                            /*진입차수가 1인 케이스만 추출*/

sort hid

save "D:\KReIS\STATA\k01.dta", replace


use "D:\KReIS\STATA\kreish02.dta", clear

keep hid w02hid hent h02d001 h02d002     /*2차년도 데이터에서 필요한 변수만 추출 */

keep if hent==1                            /*진입차수가 1인 케이스만 추출*/

sort hid

save "D:\KReIS\STATA\k02.dta", replace


use "D:\KReIS\STATA\kreish03.dta", clear      /*3차년도 데이터에서 필요한 변수만 추출 */

keep hid w01hid w02hid w03hid hent w01hsvy w02hsvy w03hsvy h03d001 h03d002

keep if hent==1                               /*진입차수가 1인 케이스만 추출*/

sort hid


merge hid using "D:\KReIS\STATA\k02.dta" "D:\KReIS\STATA\k01.dta", unique sort

tab _merge                                 /*진입차수가 1인 가구자료를 머지*/

save "D:\KReIS\STATA\t1.dta", replace


use "D:\KReIS\STATA\kreish02.dta", clear

keep hid w02hid hent h02d001 h02d002        /*2차년도 데이터에서 필요한 변수만 추출 */

keep if hent==2                               /*진입차수가 2인 케이스만 추출*/   

sort w02hid

save "D:\KReIS\STATA\k02_1.dta", replace


use "D:\KReIS\STATA\kreish03.dta", clear /*3차년도 데이터에서 필요한 변수만 추출 */

keep hid w01hid w02hid w03hid hent w01hsvy w02hsvy w03hsvy h03d001 h03d002

keep if hent==2 & w02hsvy==1           /*2차년도 조사 참여하고 진입차수가 1인 케이스만 추출*/

sort w02hid


merge w02hid using "D:\KReIS\STATA\k02_1.dta", unique sort 

tab _merge                              /*진입차수가 2인 가구자료를 머지*/

save "D:\KReIS\STATA\t2.dta", replace


/*진입차수가 3이거나 2차년도 조사 참여하지 않은 진입차수가 2인 케이스 추출*/

use "D:\KReIS\STATA\kreish03.dta", clear

keep hid w01hid w02hid w03hid hent w01hsvy w02hsvy w03hsvy h03d001 h03d002

keep if hent==3 | (hent==2 & w02hsvy==2)

save "D:\KReIS\STATA\t3.dta", replace

use "D:\KReIS\STATA\t1.dta", clear   /*각 진입차수별로 머지한 데이터를 종으로 합친다*/

append using "D:\KReIS\STATA\t2.dta"

append using "D:\KReIS\STATA\t3.dta"

keep hid w01hid w02hid w03hid hent w01hsvy w02hsvy w03hsvy h01d001 h01d002 h02d001 h02d002 h03d001 h03d002

order hid w01hid w02hid w03hid hent w01hsvy w02hsvy w03hsvy h01d001 h01d002 h02d001 h02d002 h03d001 h03d002               /*변수 순서 정리*/

save "D:\KReIS\STATA\hw.dta", replace

목록
다음글
개인용 데이터를 횡으로 연도간 머지하는 방법 (7차 기준)
이전글
FAQ의 예제 프로그램에서 자료를 불러오기 위한 경로 지정 방법