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.
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;
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;
Try this...
proc transpose data=HAVE out=WANT;
var VAR: ;
run;
Hope this helps.
@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;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.