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

I have data for people in this form:

 

DATA have;
    INPUT id start_age end_age;
    DATALINES;
    1 27 30
    2 15 15
    3 30 32
    ;
RUN

I want to add a new row for every year of data between the two ages, inclusive of start and end ages. My desired output looks like:

 

ID   age_year 

1          27

1          28

1          29

1          30

2          15

3          30

3          31

3          32

 

Should I use an array and within a do loop add rows for i=start_age to end_age?

1 ACCEPTED SOLUTION

Accepted Solutions
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Please dont code all in uppercase.  A simple do loop and output will suffice:

data want (drop=start_age end_age);
  set have;
  do age=start_age to end_age;
    output;
  end;
run;

View solution in original post

1 REPLY 1
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Please dont code all in uppercase.  A simple do loop and output will suffice:

data want (drop=start_age end_age);
  set have;
  do age=start_age to end_age;
    output;
  end;
run;
How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 1 reply
  • 1177 views
  • 0 likes
  • 2 in conversation