/* SAMPLE SAS PROGRAM "SA5.SAS" */ *This program reads income and population data from the CISER Data Archive; filename in1 'U:\ArchiveData\econ\046\sa05.dfx' lrecl = 416; libname ssd 'U:\Users\your_netid\'; option ls = 79; /* Read total income for each state*/ * for states, 1969-1994; DATA sa5tf; INFILE in1 lrecl = 416; INPUT statec 1-5 line 7-9@; IF line EQ 010 THEN DO; INPUT @21 (YR1969-YR1994) (11.0); END; ELSE DELETE; DATA sa5ti; set sa5tf(drop=line); proc sort; by statec; /* In data set sa5tf, the variables are statec, and yr1969-yr1994, the */ /* value of varibles yr1969-yr1994 are the corresponding year total */ /* income. By using proc transpose procedure, the new data set contains */ /* variables statec, year1, and tincome1. The original variables yr1969-*/ /* yr1994 become values of variable year1. */ proc transpose DATA=sa5ti OUT=sa5t NAME=YEAR1 PREFIX=TINCOME; By statec; VAR YR1969-YR1994; proc sort; By YEAR1 statec; /* Read population data */ DATA sa5pf; INFILE in1 lrecl = 416; INPUT statec 1-5 line 7-9@; IF (line EQ 020) THEN DO; INPUT @21 (YR1969-YR1994) (11.0); END; ELSE DELETE; DATA sa5pi; set sa5pf(drop= line); proc sort; by statec; proc transpose DATA=sa5pi OUT=sa5p NAME=YEAR1 PREFIX=POP; By statec; VAR YR1969-YR1994; proc sort; By YEAR1 statec; DATA ssd.sa5 (drop= year1 year2); merge sa5t sa5p; by year1 statec; year2 = substr(YEAR1, 3, 4); /*drop the yr prefix */ year = input (year2, 4.0); /*define year as a numeric variable*/ rename tincome1=tincome; rename pop1=pop; run;