BookmarkSubscribeRSS Feed
scb
Obsidian | Level 7 scb
Obsidian | Level 7

data sensitive;
input type1 $ type2 $ var1 $ var2 $ var3 $ var4 $;
cards;
t1 ta custid custname m mobile
;

 

With the dataset above, how can I transpose var1,var2,var3,and var4 only? The desired dataset should look like:

 

Var_need

custid

custname

m

mobile

 

Is it possible? Anyone can help? Thanks.

4 REPLIES 4
andreas_lds
Jade | Level 19

Using a loop and the output-statement:

data work.want;
   set work.sensitive;
   length Var_Need $ 8; /* important: must be equal to max vlength of var1-var4 */
   array vars var1-var4;
   
   do i = 1 to dim(vars);
      Var_Need = vars[i];
      output;
   end;

   keep Var_Need;
run;
RW9
Diamond | Level 26 RW9
Diamond | Level 26

This is not complicated, what have you tried?  Have you for instance tried the tranpose procedure, which you may find useful in this case:

data sensitive;
  input type1 $ type2 $ var1 $ var2 $ var3 $ var4 $;
cards;
t1 ta custid custname m mobile
;
run;

proc transpose data=sensitive out=want;
  by type1 type2;
  var var:;
run;
ShiroAmada
Lapis Lazuli | Level 10

Try this...

proc transpose data=HAVE out=WANT;
  var VAR: ;
run;

 

Hope this helps.

soham_sas
Quartz | Level 8

@scb you can do it like below 

 

data sensitive;
input type1 $ type2 $ var1 $ var2 $ var3 $ var4 $;
cards;
t1 ta custid custname m mobile
;
run;

proc transpose data=sensitive out=want(drop=_name_ rename=(col1=var_need));
var var1-var4;
run;

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

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