Wednesday, Nov 25
Tutorials | Overview | User Guide | FAQ | Contact/Help | News | Data Quality | File Structure | CDS R/D | Sponsorship | More...

 

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;

 
 



Institute for Social Research | University of Michigan | Privacy | Conditions of Use