如何从第一个单词大写而另一个在 SAS 括号中的其他两个中创建一个字符变量?

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

我在 sas 中有一个 table,我想创建一个新的 C 列,其中包含一个应该由 A 和 B 计算的变量,A 应该是大写字母,B 应该是括号。

如果 A 是 dog 并且 B 是 cat 那么该行中的 C 应该是 DOG (cat) .

我是 sas 的新手,我该怎么做? 我知道我可以通过 upcase(A) 获得 upcase,但我不知道如何让 2 个字符变量一个接一个地创建一个新变量以及如何将一个新变量放在括号中。

SAS 有一系列 CAT.() 函数可以让这一切变得简单。 CATS() 从值中去除 leading/trailing 空格。 CATX() 允许您指定要在值之间粘贴的值。

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

就个人而言,我只在非常特殊的情况下才使用 cat/cats/catx。对于这样的问题,您可以简单地使用连接运算符 ||,这将使代码更容易理解:

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

好吧,这可能有点冗长,但我认为这对于新的 SAS 程序员来说也更容易理解:)