I am working in SAS 9.4. I have a data set and one of the variables is called 'state'. I need to remove all rows in which the 'state' variable is not equal to 'Alaska'. I also need to combine three other variables (month, day, and year) to create a new variable called EruptionDate and then drop those other 3 variables. The final thing that I can't figure out is how to only display the eruptions occuring after the year 2005. I am quite new to SAS and programming in general and this is what I have so far, but it's not working:
DATA Alsaka;
SET Work.earthquake;
IF State = Alaska
THEN EruptionDate = Month, Day, Year
ELSE REMOVE row;
DROP Month;
DROP Day;
DROP Year;
RUN;
PROC PRINT Data= Alaska;
WHERE year GT 2005;
RUN;
Thanks for any help.
There are errors in your code. Can you post a few observations of your data?
Depends upon what values you have for Month, Day and Year. You may be able to use something like:
DATA Alaska (drop=Month Day Year); SET Work.earthquake; format EruptionDate date9.; IF State = 'Alaska' THEN do; EruptionDate = mdy(Month, Day, Year); output; end; RUN; PROC PRINT Data= Alaska; WHERE year(EruptionDate) GT 2005; RUN;
Art, CEO, AnalystFinder.com
I made a few adjustments to tailor it to get my desired result but your post helped a lot. Thank you!
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.