hi,
I have multiple numeric variables that I want to copy all into 1 new variable. I can do it using PUT.
Is there a another way of doing it (preferably that would also work in SQL)?
thanks in advance,
data have;
input Id Rank Count Date;
datalines;
001 01 01 2017
001 02 01 9999
002 01 03 9999
003 01 02 2018
003 02 02 9999
004 01 02 9999
run;
data want;
/*format a $3. b $2. c $2. d $4.; */
set have;
a=PUT(id,best.);
b=PUT(rank,best.);
c=PUT(count,best.);
d=PUT(date,best.);
fin=catx('|',a||b||c||d);
keep fin;
run;
If you use the CATX function, your numeric variables will automatically be converted into character, with leading and trailing spaces removed. However, make sure you mention your variables as individual arguments for the function, not as one long concatenated string. I've included a space delimiter, the first argument to the CATX function, but you could change this to "|" if you need to.
And of course, you can use this in PROC SQL as well.
proc sql;
select catx(' ',id,rank,count,date) as fin
from have;
quit;
@brulardwrote:hi,
I have multiple numeric variables that I want to copy all into 1 new variable. I can do it using PUT.
Is there a another way of doing it (preferably that would also work in SQL)?
thanks in advance,
data have; input Id Rank Count Date; datalines; 001 01 01 2017 001 02 01 9999 002 01 03 9999 003 01 02 2018 003 02 02 9999 004 01 02 9999 run; data want; /*format a $3. b $2. c $2. d $4.; */ set have; a=PUT(id,best.); b=PUT(rank,best.); c=PUT(count,best.); d=PUT(date,best.); fin=catx('|',a||b||c||d); keep fin; run;
How come there is no delimiter in '|' in your output fin?
If you use the CATX function, your numeric variables will automatically be converted into character, with leading and trailing spaces removed. However, make sure you mention your variables as individual arguments for the function, not as one long concatenated string. I've included a space delimiter, the first argument to the CATX function, but you could change this to "|" if you need to.
And of course, you can use this in PROC SQL as well.
proc sql;
select catx(' ',id,rank,count,date) as fin
from have;
quit;
Appreciate the explanation, thank you
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.
Ready to level-up your skills? Choose your own adventure.