Generating new variable based on observations from two other variables.

Reply
New Contributor
Posts: 2

Generating new variable based on observations from two other variables.

Hi, I am new to SAS. Have searched a lot but I am unable to find the solution. My problem is that I want to generate a new variable based on the values of two other variables. An example is given below. 

what I Have is

Company id            Quarter   Start   End

1                             1             130      133

1                             2              190     194

1                             3             230      231

 

what I want is

Company id             Quarter   Start   End    Days

1                               1              130    133       130

1                               1                                     131

1                               1                                     132

1                               1                                     133

1                                2             190     194      190

1                                2                                    191

1                                2                                    192

1                                2                                    193

1                                2                                    194

1                                3                  230   231    230

1                                3                                     231

 

 

Only Quarters, Days & company id is required/important. I have around 30,000+ quarters, with each quarter having a different start and end. Any simple way to do it? for every company, there are 81 quarters and there are 500 companies which all have a unique id. 

 

Thanks a lot. 

 

Super User
Posts: 2,512

Re: Generating new variable based on observations from two other variables.

Posted in reply to ahmedkhan

Like this?


data WANT;
  set HAVE;
  _LAST=END;
  do DAYS=START to _LAST;
    if DAYS ne START then call missing(START, END);
    output;
  end;
  drop _:;
run;
    
COMPANY_ID QUARTER START END DAYS
1 1 130 133 130
1 1 . . 131
1 1 . . 132
1 1 . . 133
1 2 190 194 190
1 2 . . 191
1 2 . . 192
1 2 . . 193
1 2 . . 194
1 3 230 231 230
1 3 . . 231

 

Ask a Question
Discussion stats
  • 1 reply
  • 32 views
  • 0 likes
  • 2 in conversation