data mouse_small; /* line must end in a semicolon */ input resp gene $ diet $; /* put $ after a character column */ datalines; 493 WT LFD 172 WT LFD 617 WT LFD 555 ADIPO LFD 302 ADIPO LFD 434 ADIPO LFD 595.5 WT HFD 418.5 WT HFD 642 WT HFD 1153 ADIPO HFD 890.5 ADIPO HFD 539 ADIPO HFD ; run; proc print data = mouse_small; run; proc contents data = mouse_small; run; /* what if data are in a fixed-width format? */ data mouse_small2; input @1 resp 5. @7 gene $5. @13 diet $3.; datalines; 493 WT LFD 172 WT LFD 617 WT LFD 555 LFD 302 ADIPO LFD 434 ADIPO LFD 595.5 WT HFD 418.5 WT HFD 642 WT HFD 1153 ADIPO HFD 890.5 ADIPO HFD 539 ADIPO HFD ; run; proc print data=mouse_small2; run; proc contents data = mouse_small2; run; /* Create a permanent library */ libname stat540 '/home/u64378492/STAT540_data'; run; data stat540.mouse; input resp gene $ diet $; datalines; 493 WT LFD 172 WT LFD 617 WT LFD 534 WT LFD 500.5 WT LFD 127 WT LFD 1224 WT LFD 143 WT LFD 852 WT LFD 134 WT LFD 547.5 WT LFD 555 ADIPO LFD 302 ADIPO LFD 434 ADIPO LFD 90 ADIPO LFD 72 ADIPO LFD 489 ADIPO LFD 453 ADIPO LFD 552.5 ADIPO LFD 635.5 ADIPO LFD 330.9 ADIPO LFD 169.5 ADIPO LFD 737.5 ADIPO LFD 595.5 WT HFD 418.5 WT HFD 642 WT HFD 743.5 WT HFD 1351 WT HFD 1180 WT HFD 938.5 WT HFD 670 WT HFD 1319 WT HFD 1007 WT HFD 589 WT HFD 481.5 WT HFD 785 WT HFD 1060 WT HFD 435 WT HFD 535.5 WT HFD 1153 ADIPO HFD 890.5 ADIPO HFD 539 ADIPO HFD 651.5 ADIPO HFD 585 ADIPO HFD 783.5 ADIPO HFD 533.5 ADIPO HFD 895 ADIPO HFD 579 ADIPO HFD 551 ADIPO HFD 800 ADIPO HFD 1026 ADIPO HFD 308 ADIPO HFD 1415 ADIPO HFD 342.5 ADIPO HFD 197.5 ADIPO HFD ; run; proc contents data = stat540.mouse; run; /* What about reading data from a file??? */ data stat540.mouse2; infile '/home/u64378492/STAT540_data/adipoer.dat' firstobs = 2; /* start reading data on line 2 of the file*/ input resp gene $ diet $; run; /* Presidential inauguration data */ data work.firstinaug; input @1 date ANYDTDTE12. @14 name $23.; datalines; Apr 30, 1789 George Washingtion Mar 4, 1797 John Adams Mar 4, 1801 Thomas Jefferson Mar 4, 1809 James Madison Mar 4, 1817 James Monroe Mar 4, 1825 John Quincy Adams Mar 4, 1829 Andrew Jackson Mar 4, 1837 Martin Van Buren Mar 4, 1841 William Henry Harrison ; run; proc contents data = FIRSTINAUG; /* SAS doesn't care about case*/ run; proc print data = firstinaug; run; /* associate a format with each variable in a data set */ data work.firstinaug; format date YYMMDD10.; input @1 date ANYDTDTE12. @14 name $23.; datalines; Apr 30, 1789 George Washingtion Mar 4, 1797 John Adams Mar 4, 1801 Thomas Jefferson Mar 4, 1809 James Madison Mar 4, 1817 James Monroe Mar 4, 1825 John Quincy Adams Mar 4, 1829 Andrew Jackson Mar 4, 1837 Martin Van Buren Mar 4, 1841 William Henry Harrison ; run; proc print data = firstinaug; run; proc contents data = firstinaug; run; /* Modify an existing data set with the data step */ data firstinaug; /* overwrite the data set firstinaug */ set firstinaug; day = put(weekday(date),dowName.); run; proc print data = firstinaug; run; /* Lake temperature data */ data laketemp; infile '/home/u64378492/STAT540_data/glsea-temps2024_1024_3.dat' firstobs = 11; input @1 year 4. @6 day 3. @12 superior 5. @20 michigan 5. @28 huron 5. @36 erie 5. @44 ontario 5. @52 stclair; run; proc print data = laketemp; run; data stat540.laketemp; set laketemp; date = intnx('day','01jan2024'd,day); /* give the date "day" days after 01jan2024*/ format date MMDDYY10.; drop day year stclair; run; proc print data = stat540.laketemp; run; proc contents data = stat540.laketemp; run; data stat540.lakeMI; set stat540.laketemp; ftemp = michigan*9/5 + 32; keep date ftemp michigan; rename michigan = ctemp; label michigan = 'Celsius' ftemp = 'Fahrenheit' date = 'Date'; run; proc print data = stat540.lakeMI label; run; proc contents data = stat540.lakeMI; run; /* How to create multiple new data sets in a single data step */ /* make summer, fall, winter and spring data sets for Lake MI */ data stat540.lakeMI_summer stat540.lakeMI_fall stat540.lakeMI_winter stat540.lakeMI_spring; set stat540.lakeMI; /* conditionally output each row to a data set */ if month(date) in (6,7,8) then output stat540.lakeMI_summer; if month(date) in (9,10,11) then output stat540.lakeMI_fall; if month(date) in (12,1,2) then output stat540.lakeMI_winter; if month(date) in (3,4,5) then output stat540.lakeMI_spring; run; proc print data = stat540.lakeMI_winter label; run; /* import the safari data */ data safari; infile '/home/u64378492/STAT540_data/safari_fwf_missing.dat' truncover /* need this to handle the missing values mid-line */ firstobs = 5 ; format date YYMMDD10. start tod8. end tod8.; input @1 date MMDDYY10. @12 wildebeest 2.0 @14 hyena 2.0 @20 croc 2.0 @23 weather $14. @37 start time8. @46 end time8. @55 fun $4. @59 guide $18.; run; proc print data = safari; run; proc contents data = safari; run; /* What about exporting data??? */ /* Say I want to export the safari data in a fixed-width format*/ data _null_; set safari; file '/home/u64378492/safari.dat'; put @1 date date9. @10 start time8. @19 end time8. @28 fun $5. ; run; /* what about exporting a file in a .csv format?? */ data _null_; set safari; file '/home/u64378492/safari_csv.dat' dsd dlm=','; put date:date9. start:time8. end:time8. fun; run; /* Gregory's asparagus farm data sets */ /* proc import for reading in excel spreadsheets */ proc import datafile = '/home/u64378492/STAT540_data/gaf_2007_daily_lbs.xls' dbms = xls out = gaf2007; run; proc print data = gaf2007; run; proc import datafile = '/home/u64378492/STAT540_data/gaf_2008_daily_lbs.xlsx' dbms = xlsx out = gaf2008; run; proc print data = gaf2008; run; proc contents data = gaf2008; run;