🔒 This topic is solved and locked.
Need further help from the community? Please
sign in and ask a new question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Posted 07-15-2017 04:36 PM
(1292 views)
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!
1 ACCEPTED SOLUTION
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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. 🙂
2 REPLIES 2
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
2001 and 2002 are not valid SAS variable names 🙂
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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. 🙂