This was really fun and a great way to learn, thanks! I would appreciate any feedback on my code since I just finished the SAS Programming 1: Essentials course online and am very new to SAS. /*Access the SAS Data sets*/ libname quakes "/folders/myfolders/DataCleanseQuakes"; /*Step 1: Clean the data*/ data earthquakes_clean; set quakes.earthquakes_dirty; /*Enter Code Here*/ ID=scan(ID_REGIONCODE, 1, '-'); Region_Code=left(scan(ID_REGIONCODE, 2, '-')); Flag_Tsunami=upcase(flag_tsunami); date_parts=mdy(month, day, year); Date_Time=dhms(date_parts, Hour, Minute, Seconds); eq_primary=coalesce(EQ_MAG_MW, EQ_MAG_MS, EQ_MAG_MB, EQ_MAG_ML, EQ_MAG_MFA, EQ_MAG_UNK); format Date_Time DATETIME21. eq_primary 4.1; /*Keep only the following variables*/ keep ID Region_Code Flag_Tsunami Date_Time eq_primary Focal_Depth Country Location_Name; run; /*Step 2: Create a valid and invalid data set*/ proc sort data=earthquakes_clean out=invalid nouniquekey uniqueout=noDupIDs; by ID; run; data earthquakes_valid invalid; set noDupIDs; /*Enter Code Here*/ if (Region_Code in ("1", "10", "15", "20", "30", "40", "50", "60", "70", "80", "90", "100", "110", "120", "130", "140", "150", "160", "170") and (0 <=Focal_Depth <=700) and (0 <=eq_primary <=9.9) and Flag_Tsunami in ('TSU', ' ') and Date_Time ne .) then output earthquakes_valid; else output invalid; run;
... View more