Write and run SAS programs in your web browser

how to append different column within the same dataset

Reply
New Contributor
Posts: 4

how to append different column within the same dataset

origin file 

group   weight01 weight02  weight03   

A   1 2 3

A    4 5 6 

B    7 8 9

B    6 5 4

 

I woul like to

group   weight

 A 1

A 4

B 7

B 6

A 2

A 5

B 8

B 5

A 3

A 6

B 9

B 4

New Contributor
Posts: 4

Re: how to append different column within the same dataset

I think I find the answer.

 

it is folowing logic

proc sql;
create table allvars as 
select var1 from dataset
union
select var2 from dataset
union
select var3 from dataset;
quit;

 

Super User
Posts: 7,371

Re: how to append different column within the same dataset


miris wrote:

I think I find the answer.

 

it is folowing logic

proc sql;
create table allvars as 
select var1 from dataset
union
select var2 from dataset
union
select var3 from dataset;
quit;

 


Correct version (giving exactly the output you initially posted):

proc sql;
create table allvars as 
select group, weight01 as weight from have
union all
select group, weight02 as weight from have
union all
select group, weight03 as weight from have;
quit;
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Super User
Posts: 7,371

Re: how to append different column within the same dataset

Explicit method in a data step:

data want;
set have;
array weights {*} weight01-weight03;
do i = 1 to dim(weights);
  weight = weights{i};
  output;
end;
keep group weight;
run;
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Super User
Super User
Posts: 7,668

Re: how to append different column within the same dataset

Or simply:

data want;
  set have (rename=(weight01=weight))
      have (rename=(weight02=weight))
      have (rename=(weight03=weight));
run;
Ask a Question
Discussion stats
  • 4 replies
  • 146 views
  • 0 likes
  • 3 in conversation