DATA Step, Macro, Functions and more

SAS code trying to delete all rows not matching an entry

Reply
New Contributor
Posts: 2

SAS code trying to delete all rows not matching an entry

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.

 

Super Contributor
Posts: 268

Re: SAS code trying to delete all rows not matching an entry

There are errors in your code. Can you post a few observations of your data?

PROC Star
Posts: 7,366

Re: SAS code trying to delete all rows not matching an entry

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

 

New Contributor
Posts: 2

Re: SAS code trying to delete all rows not matching an entry

I made a few adjustments to tailor it to get my desired result but your post helped a lot.  Thank you!

Ask a Question
Discussion stats
  • 3 replies
  • 157 views
  • 1 like
  • 3 in conversation