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

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
SuzanneDorinski
Lapis Lazuli | Level 10
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.  🙂

View solution in original post

2 REPLIES 2
PeterClemmensen
Tourmaline | Level 20

2001 and 2002 are not valid SAS variable names 🙂

SuzanneDorinski
Lapis Lazuli | Level 10
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.  🙂

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1281 views
  • 3 likes
  • 3 in conversation