BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
JJ_83
Obsidian | Level 7

I have this wide dataset structure. 

data have;
	input ID 7. CO2 Methane N2O HFC;
	datalines;
1004377 54 28 54 30
1000112 88 40 72 1
;

And I want this long dataset structure. 

data want;
	input ID 7. Substance $ Amount;
	datalines;
1004377 CO2     54
1004377 Methane 28
1004377 N2O     54
1004377 HFC     30
1000112 CO2     88
1000112 Methane 40
1000112 N2O     72
1000112 HFC     1
;

I'm sure there is an easy way to do this, but can't figure it out. Ideas?

1 ACCEPTED SOLUTION

Accepted Solutions
mklangley
Lapis Lazuli | Level 10
proc transpose data=have out=want (rename=(_name_=substance col1=amount));
    by id notsorted;
run;

View solution in original post

4 REPLIES 4
Reeza
Super User

Transposing data tutorials:
Wide to Long:
https://stats.idre.ucla.edu/sas/modules/how-to-reshape-data-wide-to-long-using-proc-transpose/

https://stats.idre.ucla.edu/sas/modules/reshaping-data-wide-to-long-using-a-data-step/

And sometimes a double transpose is needed for extra wide data sets:
https://gist.github.com/statgeek/2321b6f62ab78d5bf2b0a5a8626bd7cd

 


@JJ_83 wrote:

I have this wide dataset structure. 

data have;
	input ID 7. CO2 Methane N2O HFC;
	datalines;
1004377 54 28 54 30
1000112 88 40 72 1
;

And I want this long dataset structure. 

data want;
	input ID 7. Substance $ Amount;
	datalines;
1004377 CO2     54
1004377 Methane 28
1004377 N2O     54
1004377 HFC     30
1000112 CO2     88
1000112 Methane 40
1000112 N2O     72
1000112 HFC     1
;

I'm sure there is an easy way to do this, but can't figure it out. Ideas?


 

JJ_83
Obsidian | Level 7

Thank you!

mklangley
Lapis Lazuli | Level 10
proc transpose data=have out=want (rename=(_name_=substance col1=amount));
    by id notsorted;
run;
JJ_83
Obsidian | Level 7

I knew it was something simple. Thank you!