How to create year series between two years?

Solved
Occasional Contributor
Posts: 8

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
Posts: 3,805

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;

All Replies
Super User
Posts: 8,381

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
Posts: 3,805

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.