/*************************************** THIS COMMAND FILE SHOWS HOW TO READ DIFFERENT TYPES OF RAW DATA INTO SAS, USING A DATA STEP. FILENAME: READDATA.SAS ****************************************/ /*READING BLANK SEPARATED VALUES (FREE FORM DATA)*/ data class; infile "class.dat"; input lname $ sex $ age height sbp; run; proc print data=class; run; /*LENGTH STATEMENT*/ data class; infile "class.dat" ; length lname $ 12; input lname $ sex $ age height sbp; run; proc print data=class; run; /*READING RAW DATA SEPARATED BY COMMAS (.CSV FILES)*/ data pulse; infile "pulse.csv" firstobs=2 delimiter = ","; input pulse1 pulse2 ran smokes sex height weight activity; run; proc print data=pulse; run; /*READING IN RAW DATA SEPARATED BY TABS (.TAB FILES)*/ data clinic; infile "clinic.txt" firstobs=2 delimiter="09"X; input id group date $ sbp wt sideffct; run; proc print data=clinic; run; data clinic; infile "clinic.txt" firstobs=2 delimiter="09"X ; input id group date mmddyy10. sbp wt sideffct; format date mmddyy8.; run; proc print data=clinic; run; /*READING IN RAW DATA THAT ARE LINED UP IN COLUMNS*/ data marflt; infile "marflt.dat" ; input flight 1-3 depart $ 15-17 dest $ 18-20 boarded 34-36; run; proc print data=marflt(obs=10); run; /*COLUMN-STYLE INPUT (READING COLUMN DATA THAT IS ON 2 LINES)*/ data afifi; infile "afifi.dat"; input #1 idnum 1-4 age 5-8 sex 13-15 surv 16 shoktype 17-20 sbp1 21-24 hgb1 69-72 1 #2 sbp2 21-24 hgb2 69-72 1; run; proc print data=afifi(obs=10); run; /*AN ALTERNATIVE SAY TO READ IN DATA FROM 2 LINES*/ data afifi; infile "afifi.dat"; input idnum 1-4 age 5-8 sex 13-15 surv 16 shoktype 17-20 sbp1 21-24 hgb1 69-72 1 /sbp2 21-24 hgb2 69-72 1; run; proc print data=afifi(obs=10); run; /*FORMATTED-STYLE INPUT*/ data afifi; infile "afifi.dat"; input #1 @1 idnum 4.0 @5 age 4.0 @13 sex 3. @16 surv 1. @17 shoktype 4. @21 sbp1 4. @69 hgb1 4.1 #2 @21 sbp2 4. @69 hgb2 4.1; run; proc print data=afifi(obs=25); run; /*FORMATTED-STYLE INPUT ALLOWS YOU TO READ IN DATES*/ data marflt2; infile "marflt.dat"; input flight 1-3 @4 date mmddyy6. @10 time time5. orig $ 15-17 dest $ 18-20 @21 miles comma5. mail 26-29 freight 30-33 boarded 34-36 transfer 37-39 nonrev 40-42 deplane 43-45 capacity 46-48; format date mmddyy10. time time5. miles comma5.; run; proc print data=marflt2(obs=25); run; /*THE MISSOVER OPTION*/ data huge; infile "huge.dat"; input v1-v100; run; proc means; run; data huge; infile "huge.dat" missover; input v1-v100; run; proc means data=huge; run;