Programming the statistical procedures from SAS

How to create year series between two years?

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 8
Accepted Solution

How to create year series between two years?

Hi all,

My observations have FOUR variables: ID, DATE, year1 and year2. I want to create times series(frequency: yearly) data between year1 and year2.

I have already use proc transpose to create a variable YEAR which has year1 and year2 for each observation.

for example for observation A, if year1=1995 and year2=2006, then after the proc transpose I will have two observations A1 with YEAR=1995 and A2 with YEAR=2006.

Then I want to create all the time series observations with YEAR between 1995 and 2006. Namely, Year=1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005.


I tried to use proc expand to solve the problem(I did so with monthly data), but the code below does not work:#

proc expand data=mysample out=mysample1 From=year to=year;

by ID Date;

id YEAR;

convert YEAR;

run;

The code does not work. Is it because I should not use Proc expand or is there something wrong with the code? Or could anyone tell how to solve the problem?

Many thanks!


Accepted Solutions
Solution
‎10-01-2014 07:46 AM
Respected Advisor
Posts: 3,780

Re: How to create year series between two years?

Seems like you need at least one "analysis" variable.  Without Y PROC EXPAND says "Nothing to do";

data test;
   do id = 1;
     
do year=1995,2006;
         year = mdy(
1,1,year);
         y=ranuni(1);
         output;
        
end;
     
end;
  
format year date.;
  
run;
proc expand data=test out=new method=none to=year;
   by id;
   id year;
   run;
proc print;
  
run;

View solution in original post


All Replies
Super User
Posts: 7,094

Re: How to create year series between two years?

data want (keep=id year);

set have;

do year = year1 to year2;

  output;

end;

run;

You have to decide what to do with DATE, though.

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Solution
‎10-01-2014 07:46 AM
Respected Advisor
Posts: 3,780

Re: How to create year series between two years?

Seems like you need at least one "analysis" variable.  Without Y PROC EXPAND says "Nothing to do";

data test;
   do id = 1;
     
do year=1995,2006;
         year = mdy(
1,1,year);
         y=ranuni(1);
         output;
        
end;
     
end;
  
format year date.;
  
run;
proc expand data=test out=new method=none to=year;
   by id;
   id year;
   run;
proc print;
  
run;
🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 230 views
  • 1 like
  • 3 in conversation