concat multiple num var into 1 char

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 123
Accepted Solution

concat multiple num var into 1 char

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
Solution
‎04-24-2018 02:09 PM
SAS Employee
Posts: 24

Re: concat multiple num var into 1 char

Posted in reply to novinosrin

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;

 

View solution in original post


All Replies
PROC Star
Posts: 1,769

Re: concat multiple num var into 1 char


@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?

Solution
‎04-24-2018 02:09 PM
SAS Employee
Posts: 24

Re: concat multiple num var into 1 char

Posted in reply to novinosrin

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;

 

Frequent Contributor
Posts: 123

Re: concat multiple num var into 1 char

Posted in reply to antonbcristina

Appreciate the explanation, thank you

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 134 views
  • 1 like
  • 3 in conversation