将字符连接到SAS

时间:2016-04-20 18:32:18

标签: sas

我无法在SAS中将字母值连接到数组值。我想在这个数组中的每个数字值的开头添加一个字母。以下是我的工作:

array GRPAry G01-G18;

do i = 1 to 18;

if GRPAry[i] = 1 then GRPAry[i] = "G"||i;

else if GRPAry[i] = 1 then GRPAry[i] = .;

end;

split = ',';

EDGE_GRP_SUM = catx(split, of G01-G18);

drop split;

drop i;

它将运行,但不会在EDGE_GRP_SUM字段中返回任何内容。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

首先,确保您将<script src="https://gist.github.com/altherlex/bb67f17cb8eefb281866fc21dfeb921a.js"></script>定义为足够的长度。如果EDGE_GRP_SUM尝试为输出变量创建太长的字符串,则CATX将返回丢失,并且在此上下文中我认为默认为200。使用CAT系列函数时,请始终在代码中定义其全长。

第二,行:

if GRPAry[i] = 1 then GRPAry[i] = "G"||i;

以某种方式是错的。如果GRPAry是数字,则无法将"G"||i存储在其中。如果是它的字符,则GRPAry[i]=1不正确(尽管它可能仍然有用)。

由于GRPAry是数字,您可以这样做:

array GRPAry G01-G18;
split=',';
do i = 1 to 18;
  if GRPAry[i] = 1 then 
      EDGE_GRP_SUM = catx(split, EDGE_GRP_SUM, vname(GRPAry[i]));
end;
drop split i;

似乎比复制到字符数组更容易。 VNAME为您提供变量名称。