* problem #1; *** WHERE WILL THE PERMANENT SAS DATA SET BE WRITTEN; libname x 'c:\msz'; /* CREATE A PERMANENT SAS DATA SET NAMED CLINICAL USE AN INFILE STATEMENT TO TELL SAS WHERE THE RAW DATA ARE LOCATED USE COLUMN INPUT FOR ALL VARIABLES EXCEPT FOR VISIT (FORMATTED INPUT) USE A FORMAT STATEMENT TO ASSIGN A RULE TO THE DISPLAY OF VARIABLE VISIT */ data x.clinical; infile 'f:\sasclass\data\clinical.dat'; input id $ 1-2 group $ 11 chol 12-14 sbp 15-17 dbp 18-20 hr 21-22 typevis $ 23 @3 visit mmddyy8. ; bpratio = sbp / dbp; format visit mmddyy10. bpratio 5.1; label id = 'PERSONAL IDENTIFIER' group = 'STUDY GROUP' visit = 'DATE OF VISIT' chol = 'CHOLESTEROL' sbp = 'SYSTOLIC BLOOD PRESSURE' dbp = 'DIASTOLIC BLOOD PRESSURE' hr = 'HEART RATE' typevis = 'TYPE OF VISIT' bpratio = 'SYSTOLIC/DIASTOLIC' ; run; title 'CLINICAL DATA'; proc print data=x.clinical label; run; proc contents data=x.clinical; run; ***************************************************************************************; * problem #2; /* USE AN INFORMAT TO SPECIFY HOW VALUES OF VARIABLES M1-M5 AND F1-F5 WILL BE READ FROM THE RAW DATA (THEY ALL HAVE EMBEDDED COMMAS) USE COLUMN INPUT FOR VARIABLE COUNTY AND LIST INPUT FOR ALL OTHERS */ data pop95; informat m1-m5 f1-f5 comma.; infile 'e:\sasclass\data\nyspop95.dat'; input county $ 1-3 @05 m1-m5 / @05 f1-f5 ; tot_pop = m1+m2+m3+m4+m5+f1+f2+f3+f4+f5; pct85_m = 100 * m5 / tot_pop; pct85_f = 100 * f5 / tot_pop; label county = 'RESIDENCE COUNTY' tot_pop = 'POPULATION' pct85_m = '%85+ MALES' pct85_f = '%85+ FEMALES' ; run; title 'NEW YORK STATE POPULATION DATA'; proc print data=pop95 label noobs; var county tot_pop pct85_m pct85_f; format tot_pop comma12. pct85_m pct85_f 5.1; run; ***************************************************************************************; * problem #3; * USE LIST INPUT WITH @@ TO HOLD THE RECORD FOR MORE INPUT OF DATA; data bmi; input subject : $2. wt ht @@ ; ht = ht / 100; bmi = wt / ht**2; label subject = 'SUBJECT NUMBER' wt = 'WEIGHT (KILOGRAMS)' ht = 'HEIGHT (METERS)' bmi = 'BODY MASS INDEX' ; datalines; 1 101.7 178 2 97.1 170 3 114.2 191 4 101.9 179 5 93.1 182 6 108.1 177 7 85.0 184 8 89.1 182 9 95.8 179 10 97.8 183 11 78.7 . 12 77.5 172 13 102.8 183 14 81.1 169 15 102.1 177 16 112.1 180 17 89.7 184 ; run; title 'BODY MASS INDEX STUDY DATA'; proc print data=bmi label; var subject wt ht bmi; format bmi 6.1; run; ***************************************************************************************; * problem #4; * USE LIST INPUT WITH @@ TO HOLD THE RECORD FOR MORE INPUT OF DATA; data pre_post; input subject : $2. prewt postwt @@ ; diffwt = prewt - postwt; label subject = 'SUBJECT NUMBER' prewt = 'PRE-INTERVENTION WEIGHT' postwt = 'POST-INTERVENTION WEIGHT' diffwt = 'CHANGE IN WEIGHT' ; datalines; 1 165 160 2 202 200 3 256 259 4 155 156 5 135 134 6 175 162 7 180 187 8 174 172 9 136 138 10 168 162 11 207 197 12 155 155 13 220 205 14 163 153 15 159 150 16 253 255 17 138 128 18 287 280 19 177 171 20 181 170 21 148 154 22 167 170 23 190 180 24 165 154 25 155 150 26 153 145 27 205 206 28 186 184 29 178 166 30 129 132 31 125 127 32 165 169 33 156 158 34 170 161 35 145 152 ; run; title 'WEIGHT CHANGE STUDY'; proc means data=pre_post; var diffwt; run; ***************************************************************************************; * problem #5; /* USE FORMATTED INPUT - SKIP TO A NEW INPUT RECORD USING A SLASH USE AN LRECL OPTION ON THE INFILE STATEMENT TO TELL SAS RECORD LENGTH > 256 */ data nyszip90; infile 'k:\sasclass\data\stf3b90.dat' lrecl=7925; input @0142 zip 5. @0301 t_pop 9. @0391 m_pop 9. @0400 f_pop 9. / @1777 grad 9. / @3868 pcapinc 9. / ; m_pct = 100 * m_pop / t_pop; f_pct = 100 * f_pop / t_pop; g_pct = 100 * grad / t_pop; format m_pct f_pct g_pct 5.1 t_pop m_pop f_pop comma11. pcapinc dollar12.; label zip = 'RESIDENCE ZIP' t_pop = 'POPULATION' m_pop = 'MALES' f_pop = 'FEMALES' grad = '# WITH GRADUATE DEGREE' pcapinc = 'PER CAPITA INCOME' m_pct = '% MALES' f_pct = '% FEMALES' g_pct = '% GRADUATE DEGREE' ; run; title '1990 CENSUS DATA BY ZIP'; proc print data=nyszip90 label; var zip t_pop m_pct f_pct g_pct pcapinc; run; ***************************************************************************************; * problem #6; libname x 'c:\msz'; /* USE FORMATTED INPUT USE INFORMAT LISTS TO READ THE DIAGNOSES AND PROCEDURES */ data x.hospital; infile 'e:\sasclass\data\sparcs99.txt'; input @001 id $19. @020 admit mmddyy8. @028 disch mmddyy8. @036 (adx pdx odx1-odx14) ($5.) @116 (ppr opr1-opr14) ($4.) @176 dob mmddyy8. @184 race $1. @185 eth $1. ; age = (admit - dob) / 365; los = disch - admit; format admit disch dob mmddyy10.; run; proc print data=x.hospital; run;