Hello,
I have a set of time series of date data (see below). But the type of data is 'Numerical', the Format is 'Best12.' and informat is 12.''. When I use the code 'year(date)', I get wrong outcome. How to manipulate these date data if I want to get '1960 for year and 01 for month of first obs' using codes 'year(date) and month(date)'? Thanks
date
196001
196002
196003
196004
.....
.....
year=floor(date/100);
month=mod(date,100);
The YEAR and MONTH functions that you are trying to use only work on data stored as SAS dates, which these are not.
year=floor(date/100);
month=mod(date,100);
The YEAR and MONTH functions that you are trying to use only work on data stored as SAS dates, which these are not.
If you want to make a SAS date from your date number first:
format sas_date date9.;
sas_date = input(date, yymmn6.);
year = year(sas_date);
month = month(sas_date);
Hi ,
We can also use the below approach .
data have ;
input date ;
year = input(substr(strip(date),1,4),6.);
month= input(substr(strip(date),5,2),4.);
datalines;
196001
196002
196003
196004
;
run;
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.
Ready to level-up your skills? Choose your own adventure.