BookmarkSubscribeRSS Feed
KrunalPatel
Calcite | Level 5

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

3 REPLIES 3
Reeza
Super User

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

Tom
Super User Tom
Super User

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;

KrunalPatel
Calcite | Level 5

Hi Reeza - sorry I was not clear enough.

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

Thanks All

KP

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 2645 views
  • 1 like
  • 3 in conversation