BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
MR_Xishuai
Calcite | Level 5

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!

1 ACCEPTED SOLUTION

Accepted Solutions
Astounding
PROC Star

This should be pretty close to what you need:

data mysample1;

   set mysample;

   do year = year1 to year2;

      output;

   end;

   drop year1 year2;

run;

If that's not it, perhaps you could explain a little more about what you are looking for.

Good luck.

View solution in original post

3 REPLIES 3
M_Maldonado
Barite | Level 11

Hi Xishuai,

Not sure if I understand right the structure of your data.

Can you provide an example of what your data looks like and the format that you need it?

Thanks,

Miguel

Anotherdream
Quartz | Level 8

Ah astounding you beat me right to it!

I also think what you are asking for is exactly accomplished by Astounding... I actually came to the exact same solution, a little late tho.

Astounding
PROC Star

This should be pretty close to what you need:

data mysample1;

   set mysample;

   do year = year1 to year2;

      output;

   end;

   drop year1 year2;

run;

If that's not it, perhaps you could explain a little more about what you are looking for.

Good luck.

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

How to choose a machine learning algorithm

Use this tutorial as a handy guide to weigh the pros and cons of these commonly used machine learning algorithms.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 3 replies
  • 1256 views
  • 1 like
  • 4 in conversation