Hi everyone,
I am trying to transform data into panel data to perform an analysis.
I have data as "Have" and need to have "Want"
how would I do this in easy step?
"Have"
Date | amazon | walmart |
1/1/2018 | 1,376 | 854 |
2/1/2018 | 1,283 | 7,496 |
3/1/2018 | 792 | 2,258 |
"Want"
Date | Client | value |
1/1/2018 | amazon | 1,376 |
2/1/2018 | amazon | 1,283 |
3/1/2018 | amazon | 792 |
1/1/2018 | walmart | 854 |
2/1/2018 | walmart | 7,496 |
3/1/2018 | walmart | 2,258 |
Does it need to be complicated?
data want;
set have;
length client $ 32;
client = 'amazon';
value = amazon;
output;
client = 'walmart';
value = walmart;
output;
keep date client value;
run;
proc sort data=want;
by client;
run;
If you have hundreds of clients, we can revisit other possibilities.
PROC TRANSPOSE - wide to long is what you're looking for, the UCLA SAS tutorial page has examples of how to do this either with a data step or PROC TRANSPOSE. Your data is well structured for a PROC TRANSPOSE.
@sasmaven wrote:
Hi everyone,
I am trying to transform data into panel data to perform an analysis.
I have data as "Have" and need to have "Want"
how would I do this in easy step?
"Have"
Date amazon walmart 1/1/2018 1,376 854 2/1/2018 1,283 7,496 3/1/2018 792 2,258
"Want"
Date Client value 1/1/2018 amazon 1,376 2/1/2018 amazon 1,283 3/1/2018 amazon 792 1/1/2018 walmart 854 2/1/2018 walmart 7,496 3/1/2018 walmart 2,258
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.