BookmarkSubscribeRSS Feed
miris
Fluorite | Level 6

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

4 REPLIES 4
miris
Fluorite | Level 6

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;

 

Kurt_Bremser
Super User

@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;
Kurt_Bremser
Super User

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;
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Or simply:

data want;
  set have (rename=(weight01=weight))
      have (rename=(weight02=weight))
      have (rename=(weight03=weight));
run;

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!

Register now

Develop Code with SAS Studio

Get started using SAS Studio to write, run and debug your SAS programs.

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
  • 4 replies
  • 1610 views
  • 0 likes
  • 3 in conversation