Hi, Happy New year. Please try the below code, it is producing your desired output. DATA YEAR2012; INPUT CONTRACT $ PLAN $ STATE $ COUNTY $ ENROLLMENT 12.; FORMAT ENROLLMENT 12.; DATALINES; H9999 801 NY SUFFOLK 90 H9999 810 NY SUFFOLK 0 H9999 808 NY SUFFOLK 0 H9999 032 NY SUFFOLK 614 H9999 814 NY SUFFOLK 1324 H9999 021 NY SUFFOLK 1211 H9999 029 NY SUFFOLK 92 H9999 033 NY SUFFOLK 396 H9999 815 NY SUFFOLK 81 ; RUN; proc sort data=YEAR2012(rename=(ENROLLMENT=yr12_ENROLLMENT CONTRACT=yr12_CONTRACT)); by PLAN STATE COUNTY; run; DATA YEAR2013; INPUT CONTRACT $ PLAN $ STATE $ COUNTY $ ENROLLMENT 12.; FORMAT ENROLLMENT 12.; DATALINES; H9999 810 NY SUFFOLK 50 H9999 808 NY SUFFOLK 1000 H9999 032 NY SUFFOLK 600 H9999 814 NY SUFFOLK 1300 H9999 021 NY SUFFOLK 1355 H9999 029 NY SUFFOLK 192 H9999 033 NY SUFFOLK 400 H9999 815 NY SUFFOLK 90 H9999 035 NY SUFFOLK 500 ; RUN; proc sort data=YEAR2013(rename=(ENROLLMENT=yr13_ENROLLMENT CONTRACT=yr13_CONTRACT)); by PLAN STATE COUNTY; run; data yr12_13; merge YEAR2012(in=a) YEAR2013(in=b); by PLAN STATE COUNTY; if yr13_ENROLLMENT ne . and yr12_ENROLLMENT ne . then DIFFERENCE=yr13_ENROLLMENT-yr12_ENROLLMENT; if yr13_ENROLLMENT eq . and yr12_ENROLLMENT ne . then DIFFERENCE=0-yr12_ENROLLMENT; if yr13_ENROLLMENT ne . and yr12_ENROLLMENT eq . then DIFFERENCE=yr13_ENROLLMENT-0; run; alternatively by proc sql PROC SQL; CREATE TABLE yr12_13 AS SELECT t1.yr12_CONTRACT, t1.PLAN, t1.STATE, t1.COUNTY, t1.yr12_ENROLLMENT, t2.yr13_CONTRACT, t2.PLAN AS PLAN1, t2.STATE AS STATE1, t2.COUNTY AS COUNTY1, t2.yr13_ENROLLMENT, /* DIFFERENCE */ (coalesce(t2.yr13_ENROLLMENT,0)-coalesce(t1.yr12_ENROLLMENT,0)) AS DIFFERENCE FROM WORK.YEAR2012 t1 FULL JOIN WORK.YEAR2013 t2 ON (t1.PLAN = t2.PLAN) AND (t1.STATE = t2.STATE) AND (t1.COUNTY = t2.COUNTY); QUIT; Thanks, Jag
... View more