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: 279

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

Posted in reply to Moviefan04

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

PROC Star
Posts: 7,473

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

Posted in reply to Moviefan04

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
  • 208 views
  • 1 like
  • 3 in conversation