| |
Merging PSID Data: SAS Example
Method 2
*-----------------------------------------------------------------------------*
| |
| MERGE USING MULTIPLE FAMILY-INDIVIDUAL FILES |
| |
| Step 1: Subset family-level id's and selected variables |
| and select cases from xyr-individual file |
| |
| Step 2a: Subset year-n family file |
| Step 2b: Sort year-n family file from 2a by year-n family id |
| Step 2c: Sort xyr-individual file from step 1 by year-n family id |
| Step 2d: Merge sorted xyr-individual file from 2c |
| with sorted year-n subsetted family file from 2b |
| (a one-to-many [family-to-individual] match) |
| Step 2e: Sort resulting year-n family-individual file from 2d |
| by individual ids |
| |
| ... Repeat Steps 2 for all other years |
| |
| Step 3: Merge family-individual files from step 2e |
| |
*-----------------------------------------------------------------------------;
LIBNAME mrg '[Add Your Path Here]';
/* ================================================================== */
/* step 1: subset family-level id's and individual variables */
/* and select cases from cross-year individual record */
/* ================================================================== */
DATA mrg.indvars(COMPRESS=YES);
INFILE '[PATH]\IND2007ER.txt' LRECL = 3118 ;
INPUT
/* 1968 ID and PN */ ER30001 2-5 ER30002 6-8
/* 1969 */ ER30020 44 - 47
/* 1970 */ ER30043 97 - 100
/* 1971 */ ER30067 152 - 155
/* 1972 */ ER30091 207 - 210
/* 1973 */ ER30117 265 - 268
/* 1974 */ ER30138 317 - 320
/* 1975 */ ER30160 370 - 373
/* 1976 */ ER30188 436 - 439
/* 1977 */ ER30217 503 - 506
/* 1978 */ ER30246 571 - 574
/* 1979 */ ER30283 648 - 651
/* 1980 */ ER30313 718 - 721
/* 1981 */ ER30343 788 - 791
/* 1982 */ ER30373 858 - 861
/* 1983 */ ER30399 919 - 922
/* 1984 */ ER30429 992 - 995
/* 1985 */ ER30463 1077 - 1080
/* 1986 */ ER30498 1167 - 1170
/* 1987 */ ER30535 1259 - 1262
/* 1988 */ ER30570 1348 - 1351
/* 1989 */ ER30606 1438 - 1441
/* 1990 */ ER30642 1528 - 1532
/* 1991 */ ER30689 1647 - 1650
/* 1992 */ ER30733 1764 - 1767
/* 1993 */ ER30806 1914 - 1918
/* 1994 */ ER33101 2190 - 2194
/* 1995 */ ER33201 2289 - 2293
/* 1996 */ ER33301 2482 - 2485
/* 1997 */ ER33401 2566 - 2570
/* 1999 */ ER33501 2651 - 2655
/* 2001 */ ER33601 2750 - 2753
/* 2003 */ ER33701 2840 - 2844
/* 2005 */ ER33801 2931 - 2935
/* 2007 */ ER33901 3024 - 3028
/* your individual variable locations here */
;
LABEL
ER30001 = "1968 INTERVIEW NUMBER 68"
ER30002 = "PERSON NUMBER 68"
ER30020 = "1969 INTERVIEW NUMBER 69"
ER30043 = "1970 INTERVIEW NUMBER 70"
ER30067 = "1971 INTERVIEW NUMBER 71"
ER30091 = "1972 INTERVIEW NUMBER 72"
ER30117 = "1973 INTERVIEW NUMBER 73"
ER30138 = "1974 INTERVIEW NUMBER 74"
ER30160 = "1975 INTERVIEW NUMBER 75"
ER30188 = "1976 INTERVIEW NUMBER 76"
ER30217 = "1977 INTERVIEW NUMBER 77"
ER30246 = "1978 INTERVIEW NUMBER 78"
ER30283 = "1979 INTERVIEW NUMBER 79"
ER30313 = "1980 INTERVIEW NUMBER 80"
ER30343 = "1981 INTERVIEW NUMBER 81"
ER30373 = "1982 INTERVIEW NUMBER 82"
ER30399 = "1983 INTERVIEW NUMBER 83"
ER30429 = "1984 INTERVIEW NUMBER 84"
ER30463 = "1985 INTERVIEW NUMBER 85"
ER30498 = "1986 INTERVIEW NUMBER 86"
ER30535 = "1987 INTERVIEW NUMBER 87"
ER30570 = "1988 INTERVIEW NUMBER 88"
ER30606 = "1989 INTERVIEW NUMBER 89"
ER30642 = "1990 INTERVIEW NUMBER 90"
ER30689 = "1991 INTERVIEW NUMBER 91"
ER30733 = "1992 INTERVIEW NUMBER 92"
ER30806 = "1993 INTERVIEW NUMBER 93"
ER33101 = "1994 INTERVIEW NUMBER 94"
ER33201 = "1995 INTERVIEW NUMBER 95"
ER33301 = "1996 INTERVIEW NUMBER 96"
ER33401 = "1997 INTERVIEW NUMBER 97"
ER33501 = "1999 INTERVIEW NUMBER 99"
ER33601 = "2001 INTERVIEW NUMBER 01"
ER33701 = "2003 INTERVIEW NUMBER 03"
ER33801 = "2005 INTERVIEW NUMBER 05"
ER33901 = "2007 INTERVIEW NUMBER 07"
/* your individual variable labels here */
;
/* your individual missing data here */
;
/* your filter for case slection, if any, here
this selects the first 10 cases for testing setup */
/* if _n_ gt 10 then stop; */
RUN;
/* ================================================================== */
/* Step 2 for 1968 family file (n=4802) */
/* ================================================================== */
DATA fam68; INFILE '[PATH]\FAM1968.txt' LRECL=753;
INPUT
V3 9-12
/* your 1968 variable locations here */
;
LABEL
V3 ="INTERVIEW NUMBER 68 1:6-9"
/* your 1968 variable labels here */
;
/* your 1968 missing data here */
RUN ;
PROC SORT DATA=fam68 TAGSORT; BY V3; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30001; RUN;
DATA mrg.famind68(COMPRESS=YES);
MERGE fam68(rename=V3=ER30001) mrg.indvars(IN=INDOK);
BY ER30001; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind68 TAGSORT; BY ER30001 ER30002;
RUN ;
/* ================================================================== */
/* step 2 for 1969 family file (n=4460) */
/* ================================================================== */
DATA fam69; INFILE '[PATH]\FAM1969.txt' LRECL=1050;
INPUT
V442 4-7
/* your 1969 variable locations here */
;
LABEL
V442 ="1969 INT NUMBER 11:6-9"
/* your 1969 variable labels here */
;
/* your 1969 missing data here */
RUN ;
PROC SORT DATA=fam69 TAGSORT; BY V442; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30020; RUN;
DATA mrg.famind69(COMPRESS=YES);
MERGE fam69(rename=V442=ER30020) mrg.indvars(IN=INDOK);
BY ER30020; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind69 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1970 family file (n=4645) */
/* ================================================================== */
DATA fam70; INFILE '[PATH]\FAM1970.txt' LRECL=1174;
INPUT
V1102 4-7
/* your 1970 variable locations here */
;
LABEL
V1102 ="1970 INT # 21:6-9"
/* your 1970 variable labels here */
;
/* your 1970 missing data here */
RUN ;
PROC SORT DATA=fam70 TAGSORT; BY V1102; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30043; RUN;
DATA mrg.famind70(COMPRESS=YES);
MERGE fam70(rename=V1102=ER30043) mrg.indvars(IN=INDOK);
BY ER30043; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind70 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1971 family file (n=4840) */
/* ================================================================== */
DATA fam71; INFILE '[PATH]\FAM1971.txt' LRECL=947;
INPUT
V1802 2-5
/* your 1971 variable locations here */
;
LABEL
V1802 ="71 ID NO."
/* your 1971 variable labels here */
;
/* your 1971 missing data here */
RUN ;
PROC SORT DATA=fam71 TAGSORT; BY V1802; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30067; RUN;
DATA mrg.famind71(COMPRESS=YES);
MERGE fam71(rename=V1802=ER30067) mrg.indvars(IN=INDOK);
BY ER30067; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind71 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1972 family file (n=5060) */
/* ================================================================== */
DATA fam72; INFILE '[PATH]\FAM1972.txt' LRECL=995;
INPUT
V2402 4-7
/* your 1972 variable locations here */
;
LABEL
V2402 ="1972 INT # 46:6-9"
/* your 1972 variable labels here */
;
/* your 1972 missing data here */
RUN ;
PROC SORT DATA=fam72 TAGSORT; BY V2402; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30091; RUN;
DATA mrg.famind72(COMPRESS=YES);
MERGE fam72(rename=V2402=ER30091) mrg.indvars(IN=INDOK);
BY ER30091; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind72 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1973 family file (n=5285) */
/* ================================================================== */
DATA fam73; INFILE '[PATH]\FAM1973.txt' LRECL=557;
INPUT
V3002 4-7
/* your 1973 variable locations here */
;
LABEL
V3002 ="1973 INT # 59:6-9"
/* your 1973 variable labels here */
;
/* your 1973 missing data here */
RUN ;
PROC SORT DATA=fam73 TAGSORT; BY V3002; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30117; RUN;
DATA mrg.famind73(COMPRESS=YES);
MERGE fam73(rename=V3002=ER30117) mrg.indvars(IN=INDOK);
BY ER30117; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind73 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1974 family file (n=5517) */
/* ================================================================== */
DATA fam74; INFILE '[PATH]\FAM1974.txt' LRECL=610;
INPUT
V3402 4-7
/* your 1974 variable locations here */
;
LABEL
V3402 ="1974 ID NUMBER"
/* your 1974 variable labels here */
;
/* your 1974 missing data here */
RUN ;
PROC SORT DATA=fam74 TAGSORT; BY V3402; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30138; RUN;
DATA mrg.famind74(COMPRESS=YES);
MERGE fam74(rename=V3402=ER30138) mrg.indvars(IN=INDOK);
BY ER30138; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind74 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1975 family file (n=5725) */
/* ================================================================== */
DATA fam75; INFILE '[PATH]\FAM1975.txt' LRECL=754;
INPUT
V3802 4-7
/* your 1975 variable locations here */
;
LABEL
V3802 ="1975 INT # 80:6-9"
/* your 1975 variable labels here */
;
/* your 1975 missing data here */
RUN ;
PROC SORT DATA=fam75 TAGSORT; BY V3802; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30160; RUN;
DATA mrg.famind75(COMPRESS=YES);
MERGE fam75(rename=V3802=ER30160) mrg.indvars(IN=INDOK);
BY ER30160; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind75 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1976 family file (n=5862) */
/* ================================================================== */
DATA fam76; INFILE '[PATH]\FAM1976.txt' LRECL=1460;
INPUT
V4302 4-7
/* your 1976 variable locations here */
;
LABEL
V4302 ="1976 ID NUMBER 6V2"
/* your 1976 variable labels here */
;
/* your 1976 missing data here */
RUN ;
PROC SORT DATA=fam76 TAGSORT; BY V4302; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30188; RUN;
DATA mrg.famind76(COMPRESS=YES);
MERGE fam76(rename=V4302=ER30188) mrg.indvars(IN=INDOK);
BY ER30188; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind76 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1977 family file (n=6007) */
/* ================================================================== */
DATA fam77; INFILE '[PATH]\FAM1977.txt' LRECL=936;
INPUT
V5202 4-7
/* your 1977 variable locations here */
;
LABEL
V5202 ="1977 ID"
/* your 1977 variable labels here */
;
/* your 1977 missing data here */
RUN ;
PROC SORT DATA=fam77 TAGSORT; BY V5202; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30217; RUN;
DATA mrg.famind77(COMPRESS=YES);
MERGE fam77(rename=V5202=ER30217) mrg.indvars(IN=INDOK);
BY ER30217; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind77 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1978 family file (n=6154) */
/* ================================================================== */
DATA fam78; INFILE '[PATH]\FAM1978.txt' LRECL=962;
INPUT
V5702 4-7
/* your 1978 variable locations here */
;
LABEL
V5702 ="1978 ID"
/* your 1978 variable labels here */
;
/* your 1978 missing data here */
RUN ;
PROC SORT DATA=fam78 TAGSORT; BY V5702; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30246; RUN;
DATA mrg.famind78(COMPRESS=YES);
MERGE fam78(rename=V5702=ER30246) mrg.indvars(IN=INDOK);
BY ER30246; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind78 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1979 family file (n=6373) */
/* ================================================================== */
DATA fam79; INFILE '[PATH]\FAM1979.txt' LRECL=1037;
INPUT
V6302 4-7
/* your 1979 variable locations here */
;
LABEL
V6302 ="1979 ID"
/* your 1979 variable labels here */
;
/* your 1979 missing data here */
RUN ;
PROC SORT DATA=fam79 TAGSORT; BY V6302; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30283; RUN;
DATA mrg.famind79(COMPRESS=YES);
MERGE fam79(rename=V6302=ER30283) mrg.indvars(IN=INDOK);
BY ER30283; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind79 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1980 family file (n=6533) */
/* ================================================================== */
DATA fam80; INFILE '[PATH]\FAM1980.txt' LRECL=1097;
INPUT
V6902 4-7
/* your 1980 variable locations here */
;
LABEL
V6902 ="1980 INTERVIEW NUMBER"
/* your 1980 variable labels here */
;
/* your 1980 missing data here */
RUN ;
PROC SORT DATA=fam80 TAGSORT; BY V6902; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30313; RUN;
DATA mrg.famind80(COMPRESS=YES);
MERGE fam80(rename=V6902=ER30313) mrg.indvars(IN=INDOK);
BY ER30313; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind80 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1981 family file (n=6620) */
/* ================================================================== */
DATA fam81; INFILE '[PATH]\FAM1981.txt' LRECL=1240;
INPUT
V7502 4-7
/* your 1981 variable locations here */
;
LABEL
V7502 ="1981 INTERVIEW NUMBER"
/* your 1981 variable labels here */
;
/* your 1981 missing data here */
RUN ;
PROC SORT DATA=fam81 TAGSORT; BY V7502; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30343; RUN;
DATA mrg.famind81(COMPRESS=YES);
MERGE fam81(rename=V7502=ER30343) mrg.indvars(IN=INDOK);
BY ER30343; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind81 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1982 family file (n=6742) */
/* ================================================================== */
DATA fam82; INFILE '[PATH]\FAM1982.txt' LRECL=1112;
INPUT
V8202 4-7
/* your 1982 variable locations here */
;
LABEL
V8202 ="1982 INTERVIEW NUMBER"
/* your 1982 variable labels here */
;
/* your 1982 missing data here */
RUN ;
PROC SORT DATA=fam82 TAGSORT; BY V8202; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30373; RUN;
DATA mrg.famind82(COMPRESS=YES);
MERGE fam82(rename=V8202=ER30373) mrg.indvars(IN=INDOK);
BY ER30373; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind82 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1983 family file (n=6852) */
/* ================================================================== */
DATA fam83; INFILE '[PATH]\FAM1983.txt' LRECL=1309;
INPUT
V8802 4-7
/* your 1983 variable locations here */
;
LABEL
V8802 ="1983 INTERVIEW NUMBER"
/* your 1983 variable labels here */
;
/* your 1983 missing data here */
RUN ;
PROC SORT DATA=fam83 TAGSORT; BY V8802; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30399; RUN;
DATA mrg.famind83(COMPRESS=YES);
MERGE fam83(rename=V8802=ER30399) mrg.indvars(IN=INDOK);
BY ER30399; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind83 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1984 family file (n=6918) */
/* ================================================================== */
DATA fam84; INFILE '[PATH]\FAM1984.txt' LRECL=1998;
INPUT
V10002 4-7
/* your 1984 variable locations here */
;
LABEL
V10002 ="1984 INTERVIEW NUMBER"
/* your 1984 variable labels here */
;
/* your 1984 missing data here */
RUN ;
PROC SORT DATA=fam84 TAGSORT; BY V10002; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30429; RUN;
DATA mrg.famind84(COMPRESS=YES);
MERGE fam84(rename=V10002=ER30429) mrg.indvars(IN=INDOK);
BY ER30429; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind84 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1985 family file (n=7032) */
/* ================================================================== */
DATA fam85; INFILE '[PATH]\FAM1985.txt' LRECL=2441;
INPUT
V11102 4-7
/* your 1985 variable locations here */
;
LABEL
V11102 ="1985 INTERVIEW NUMBER"
/* your 1985 variable labels here */
;
/* your 1985 missing data here */
RUN ;
PROC SORT DATA=fam85 TAGSORT; BY V11102; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30463; RUN;
DATA mrg.famind85(COMPRESS=YES);
MERGE fam85(rename=V11102=ER30463) mrg.indvars(IN=INDOK);
BY ER30463; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind85 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1986 family file (n=7018) */
/* ================================================================== */
DATA fam86; INFILE '[PATH]\FAM1986.txt' LRECL=2202;
INPUT
V12502 4-7
/* your 1986 variable locations here */
;
LABEL
V12502 ="1986 INTERVIEW NUMBER"
/* your 1986 variable labels here */
;
/* your 1986 missing data here */
RUN ;
PROC SORT DATA=fam86 TAGSORT; BY V12502; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30498; RUN;
DATA mrg.famind86(COMPRESS=YES);
MERGE fam86(rename=V12502=ER30498) mrg.indvars(IN=INDOK);
BY ER30498; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind86 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1987 family file (n=7061) */
/* ================================================================== */
DATA fam87; INFILE '[PATH]\FAM1987.txt' LRECL=2025;
INPUT
V13702 4-7
/* your 1987 variable locations here */
;
LABEL
V13702 ="1987 INTERVIEW NUMBER"
/* your 1987 variable labels here */
;
/* your 1987 missing data here */
RUN ;
PROC SORT DATA=fam87 TAGSORT; BY V13702; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30535; RUN;
DATA mrg.famind87(COMPRESS=YES);
MERGE fam87(rename=V13702=ER30535) mrg.indvars(IN=INDOK);
BY ER30535; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind87 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1988 family file (n=7114) */
/* ================================================================== */
DATA fam88; INFILE '[PATH]\FAM1988.txt' LRECL=2705;
INPUT
V14802 4-7
/* your 1988 variable locations here */
;
LABEL
V14802 ="1988 INTERVIEW NUMBER"
/* your 1988 variable labels here */
;
/* your 1988 missing data here */
RUN ;
PROC SORT DATA=fam88 TAGSORT; BY V14802; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30570; RUN;
DATA mrg.famind88(COMPRESS=YES);
MERGE fam88(rename=V14802=ER30570) mrg.indvars(IN=INDOK);
BY ER30570; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind88 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1989 family file (n=7114) */
/* ================================================================== */
DATA fam89; INFILE '[PATH]\FAM1989.txt' LRECL=2486;
INPUT
V16302 4-7
/* your 1989 variable locations here */
;
LABEL
V16302 ="1989 INTERVIEW NUMBER"
/* your 1989 variable labels here */
;
/* your 1989 missing data here */
RUN ;
PROC SORT DATA=fam89 TAGSORT; BY V16302; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30606; RUN;
DATA mrg.famind89(COMPRESS=YES);
MERGE fam89(rename=V16302=ER30606) mrg.indvars(IN=INDOK);
BY ER30606; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind89 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1990 family file (n=9371) */
/* ================================================================== */
DATA fam90; INFILE '[PATH]\FAM1990.txt' LRECL=2312;
INPUT
V17702 4-8
/* your 1990 variable locations here */
;
LABEL
V17702 ="1990 INTERVIEW NUMBER 90"
/* your 1990 variable labels here */
;
/* your 1990 missing data here */
RUN ;
PROC SORT DATA=fam90 TAGSORT; BY V17702; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30642; RUN;
DATA mrg.famind90(COMPRESS=YES);
MERGE fam90(rename=V17702=ER30642) mrg.indvars(IN=INDOK);
BY ER30642; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind90 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1991 family file (n=9363) */
/* ================================================================== */
DATA fam91; INFILE '[PATH]\FAM1991.txt' LRECL=2314;
INPUT
V19002 2-5
/* your 1991 variable locations here */
;
LABEL
V19002 = "1991 INTERVIEW NUMBER"
/* your 1991 variable labels here */
;
/* your 1991 missing data here */
RUN ;
PROC SORT DATA=fam91 TAGSORT; BY V19002; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30689; RUN;
DATA mrg.famind91(COMPRESS=YES);
MERGE fam91(rename=V19002=ER30689) mrg.indvars(IN=INDOK);
BY ER30689; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind91 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1992 family file (n=9829) */
/* ================================================================== */
DATA fam92; INFILE '[PATH]\FAM1992.txt' LRECL=2294;
INPUT
V20302 4-7
/* your 1992 variable locations here */
;
LABEL
V20302 = "1992 INTERVIEW NUMBER"
/* your 1992 variable labels here */
;
/* your 1992 missing data here */
RUN ;
PROC SORT DATA=fam92 TAGSORT; BY V20302; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30733; RUN;
DATA mrg.famind92(COMPRESS=YES);
MERGE fam92(rename=V20302=ER30733) mrg.indvars(IN=INDOK);
BY ER30733; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind92 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1993 family file (n=9977) */
/* ================================================================== */
DATA fam93; INFILE '[PATH]\FAM1993.txt' LRECL=3329;
INPUT
V21602 2-6
/* your 1993 variable locations here */
;
LABEL
V21602 = "1993 INTERVIEW NUMBER"
/* your 1993 variable labels here */
;
/* your 1993 missing data here */
RUN ;
PROC SORT DATA=fam93 TAGSORT; BY V21602; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER30806; RUN;
DATA mrg.famind93(COMPRESS=YES);
MERGE fam93(rename=V21602=ER30806) mrg.indvars(IN=INDOK);
BY ER30806; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind93 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1994 family file (n=10764) */
/* ================================================================== */
DATA fam94; INFILE '[PATH]\FAM1994ER.txt' LRECL=4264;
INPUT
ER2002 2-6
/* your 1994 variable locations here */
;
LABEL
ER2002 = "1994 INTERVIEW #"
/* your 1994 variable labels here */
;
/* your 1994 missing data here */
RUN ;
PROC SORT DATA=fam94 TAGSORT; BY ER2002; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER33101; RUN;
DATA mrg.famind94(COMPRESS=YES);
MERGE fam94(rename=ER2002=ER33101) mrg.indvars(IN=INDOK);
BY ER33101; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind94 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1995 family file (n=10401) */
/* ================================================================== */
DATA fam95; INFILE '[PATH]\FAM1995ER.txt' LRECL=4052;
INPUT
ER5002 2-6
/* your 1995 variable locations here */
;
LABEL
ER5002 = "1995 INTERVIEW #"
/* your 1995 variable labels here */
;
/* your 1995 missing data here */
RUN ;
PROC SORT DATA=fam95 TAGSORT; BY ER5002; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER33201; RUN;
DATA mrg.famind95(COMPRESS=YES);
MERGE fam95(rename=ER5002=ER33201) mrg.indvars(IN=INDOK);
BY ER33201; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind95 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1996 family file (n=8511) */
/* ================================================================== */
DATA fam96; INFILE '[PATH]\FAM1996ER.txt' LRECL=4536;
INPUT
ER7002 2-5
/* your 1996 variable locations here */
;
LABEL
ER7002 = "1996 INTERVIEW #"
/* your 1996 variable labels here */
;
/* your 1996 missing data here */
RUN ;
PROC SORT DATA=fam96 TAGSORT; BY ER7002; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER33301; RUN;
DATA mrg.famind96(COMPRESS=YES);
MERGE fam96(rename=ER7002=ER33301) mrg.indvars(IN=INDOK);
BY ER33301; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind96 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1997 family file (n=6747) */
/* ================================================================== */
DATA fam97; INFILE '[PATH]\FAM1997ER.txt' LRECL=4395;
INPUT
ER10002 2-6
/* your 1997 variable locations here */
;
LABEL
ER10002 = "1997 INTERVIEW #"
/* your 1997 variable labels here */
;
/* your 1997 missing data here */
RUN ;
PROC SORT DATA=fam97 TAGSORT; BY ER10002; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER33401; RUN;
DATA mrg.famind97(COMPRESS=YES);
MERGE fam97(rename=ER10002=ER33401) mrg.indvars(IN=INDOK);
BY ER33401; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind97 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 1999 family file (n=6997) */
/* ================================================================== */
DATA fam99; INFILE '[PATH]\FAM1999ER.txt' LRECL=6917;
INPUT
ER13002 2-6
/* your 1999 variable locations here */
;
LABEL
ER13002 = "1999 FAMILY INTERVIEW (ID) NUMBER"
/* your 1999 variable labels here */
;
/* your 1999 missing data here */
RUN ;
PROC SORT DATA=fam99 TAGSORT; BY ER13002; RUN;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER33501; RUN;
DATA mrg.famind99(COMPRESS=YES);
MERGE fam99(rename=ER13002=ER33501) mrg.indvars(IN=INDOK);
BY ER33501; IF INDOK;
RUN:
PROC SORT DATA=mrg.famind99 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 2001 family file (n=7406) */
/* ================================================================== */
DATA fam01; INFILE '[PATH]\FAM2001ER.txt' LRECL=6728;
INPUT
ER17002 2-5
/* your 2001 variable locations here */
;
LABEL
ER17002 = "2001 FAMILY INTERVIEW (ID) NUMBER"
/* your 2001 variable labels here */
;
/* your 2001 missing data here */
RUN ;
PROC SORT DATA=fam01 TAGSORT; BY ER17002; RUN ;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER33601; RUN;
DATA mrg.famind01(COMPRESS=YES);
MERGE fam01(rename=ER17002=ER33601) mrg.indvars(IN=INDOK);
BY ER33601; IF INDOK;
RUN;
PROC SORT DATA=mrg.famind01 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 2003 family file (n=7822) */
/* ================================================================== */
DATA fam03; INFILE '[PATH]\FAM2003ER.txt' LRECL=6044;
INPUT
ER21002 2-6
/* your 2003 variable locations here */
;
LABEL
ER21002 = "2003 FAMILY INTERVIEW (ID) NUMBER"
/* your 2003 variable labels here */
;
/* your 2003 missing data here */
RUN ;
PROC SORT DATA=fam03 TAGSORT; BY ER21002; RUN ;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER33701; RUN;
DATA mrg.famind03(COMPRESS=YES);
MERGE fam03(rename=ER21002=ER33701) mrg.indvars(IN=INDOK);
BY ER33701; IF INDOK;
RUN ;
PROC SORT DATA=mrg.famind03 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 2005 family file (n=8002) */
/* ================================================================== */
DATA fam05; INFILE '[PATH]\FAM2005ER.txt' LRECL=6224;
INPUT
ER25002 2-6
/* your 2005 variable locations here */
;
LABEL
ER25002 = "2005 FAMILY INTERVIEW (ID) NUMBER"
/* your 2005 variable labels here */
;
/* your 2005 missing data here */
RUN ;
PROC SORT DATA=fam05 TAGSORT; BY ER25002; RUN ;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER33801; RUN ;
DATA mrg.famind05(COMPRESS=YES);
MERGE fam05(rename=ER25002=ER33801) mrg.indvars(IN=INDOK);
BY ER33801; IF INDOK;
RUN ;
PROC SORT DATA=mrg.famind05 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 2 for 2007 family file (n=8289) */
/* ================================================================== */
DATA fam07; INFILE '[PATH]\FAM2007ER.txt' LRECL=8185;
INPUT
ER36002 2-6
/* your 2007 variable locations here */
;
LABEL
ER36002 = "2007 FAMILY INTERVIEW (ID) NUMBER"
/* your 2007 variable labels here */
;
/* your 2007 missing data here */
RUN ;
PROC SORT DATA=fam07 TAGSORT; BY ER36002;
PROC SORT DATA=mrg.indvars TAGSORT; BY ER33901;
DATA mrg.famind07(COMPRESS=YES);
MERGE fam07(rename=ER36002=ER33901) mrg.indvars(IN=INDOK);
BY ER33901; IF INDOK;
RUN ;
PROC SORT DATA=mrg.famind07 TAGSORT; BY ER30001 ER30002;
RUN;
/* ================================================================== */
/* step 3: merge familiy-individual files on individual identifiers */
/* ================================================================== */
DATA mrg.xyrfind(COMPRESS=YES);
MERGE
mrg.famind68 mrg.famind69
mrg.famind70 mrg.famind71 mrg.famind72 mrg.famind73 mrg.famind74
mrg.famind75 mrg.famind76 mrg.famind77 mrg.famind78 mrg.famind79
mrg.famind80 mrg.famind81 mrg.famind82 mrg.famind83 mrg.famind84
mrg.famind85 mrg.famind86 mrg.famind87 mrg.famind88 mrg.famind89
mrg.famind90 mrg.famind91 mrg.famind92 mrg.famind93 mrg.famind94
mrg.famind95 mrg.famind96 mrg.famind97 mrg.famind99
mrg.famind01 mrg.famind03 mrg.famind05 mrg.famind07
;
BY ER30001 ER30002;
RUN;
|
|