DATA Step, Macro, Functions and more

SAS macro Call Symputx _N_ initiation

Reply
Contributor
Posts: 21

SAS macro Call Symputx _N_ initiation

Hi,

anybody can help me how can i initiate my _n_ from 1 when my condition is met.

I am using following code to do that. It is working but it has problem where _n_ is linked to 'IF' condition.

i.e. if _Type_ = 2 is appearing in row number 5 in my table "AirCont" then my call symputx outcome gives me the outome to 'Y5' , whereas I want that _N_ initiate/incriment only when condition is met.

data _null_;

set AirCont;

if _Type_ = 2 then call symputx(compress('Y' || _n_),year);

run;

Thanks,

KP

Super User
Posts: 17,831

Re: SAS macro Call Symputx _N_ initiation

Don't use the automatic variable _n_  . Create your own counter and use that instead.

Super User
Super User
Posts: 6,500

Re: SAS macro Call Symputx _N_ initiation

Perhaps I don't understand the question?

If you want your own counter just make your own counter.

data _null_;

  set AirCont;

  if _type_=2 then do;

    n+1;

    call symputx(compress('Y' || n),year);

  end;

run;

If you want to use the _N_ as the count of how many times the data step as iterated then change your IF to a WHERE.

data _null_;

  set AirCont;

  where _type_=2 ;

  call symputx(compress('Y' ||_n_),year);

run;

Contributor
Posts: 21

Re: SAS macro Call Symputx _N_ initiation

Hi Reeza - sorry I was not clear enough.

Tom - Thanks i havent tried yet but your reply will work.

Thanks All

KP

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