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.
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 |
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.
Ready to level-up your skills? Choose your own adventure.