Hello, I have a dataset that lists dates, and the corresponding YYMMM (for example September 2021 is 21M09).
I would like to take the interval of 21M02 to 23M09 and assign the values 1 through 32 to these in order.
Using a macro is preferable in case I need to change this interval. Any suggestions? Thanks!!
@l3xrink wrote:
Hi there are multiple rows that i would like to assign the value of 1,2, etc. depending on the value of YYMMM.
If you want to assign 1,2,3 just use a retained variable.
data want;
set have;
by id;
seq+1;
if first.id then seq=1;
run;
If you want to convert MONTH into relative month number then use INTCK() function. Add one if you want to number from 1 instead of from 0.
If they are not already dates that just have the YYMM5. format attached (who displays dates without the century number?).
%let basedate = '01jan2011'd;
data want;
set have;
month_number = 1 + intck('month',&basedate,yymmm);
run;
If they are strings then first convert them into a date value.
%let basedate = '01jan2011'd;
data want;
set have;
month_number = 1 + intck('month',&basedate,input(cats(compress(yymmm,'Mm'),'01'),yymmdd.));
run;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
SAS' Charu Shankar shares her PROC SQL expertise by showing you how to master the WHERE clause using real winter weather data.
Find more tutorials on the SAS Users YouTube channel.