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;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.