'How to create a character variable out of 2 others where the first word is upcase and the other in brackets in SAS?

I have a table in sas and I want to create a new column C with a variable that should be computed by A and B, A should be in upcase letters and B in brackets.

If A is dog and B is cat then the C in that row should be DOG (cat).

I' m very new to sas, how can I do that? I know that I can get upcase by upcase(A), but I don't know how I can have 2 character variables after one another to create a new variable and how to put a new variable in brackets.

sas


Solution 1:[1]

SAS has a series of CAT.() functions that make that simple. CATS() strips the leading/trailing spaces from the values. CATX() allows you specify a value to paste between the values.

 data want ;
   set have;
   length new $100 ;
   new=catx(' ',upcase(a),cats('[',b,']'));
 run;

Solution 2:[2]

Personally, I'm using cat/cats/catx only in very specific cases. For a problem like this, you can simply use the concatenate operator || that will make the code much more easier to understand:

data want;
  set have;
  attrib new format=$100.;
  new = strip(upcase(a)) || " (" || strip(b) || ")";
run;

OK, that's maybe a little bit more verbose, but I think that's also more easy to understand for a new SAS programmer :)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Tom
Solution 2 Gaadek