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
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.