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
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.