Hi,
I have a data table in the following form:
Company | Var | year_2001 | year_2002 |
A | x | 11 | 31 |
A | y | 12 | 32 |
A | z | 13 | 33 |
B | x | 21 | 41 |
B | y | 22 | 42 |
And I would like this table to be transformed into the following table:
Company | year | x | y | z |
A | year_2001 | 11 | 12 | 13 |
A | year_2002 | 31 | 32 | 33 |
B | year_2001 | 21 | 22 | . |
B | year_2002 | 41 | 42 | . |
So here what I need is to transform the values of "Var" into columns, and to transform the "2001" and "2002" columns into a new column "Year".
Thanks!
data want;
input company $ var $ year_2001 year_2002;
datalines;
A x 11 31
A y 12 32
A z 13 33
B x 21 41
B y 22 42
;
run;
proc print data=want;
run;
proc transpose data=want
out=have
name=year;
by company;
id var;
run;
proc print data=have;
run;
EDIT - realized after posting that I probably should have reversed the data set names. 🙂
2001 and 2002 are not valid SAS variable names 🙂
data want;
input company $ var $ year_2001 year_2002;
datalines;
A x 11 31
A y 12 32
A z 13 33
B x 21 41
B y 22 42
;
run;
proc print data=want;
run;
proc transpose data=want
out=have
name=year;
by company;
id var;
run;
proc print data=have;
run;
EDIT - realized after posting that I probably should have reversed the data set names. 🙂
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.