- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
@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?
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Appreciate the explanation, thank you