我无法在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字段中返回任何内容。
感谢您的帮助!
答案 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
为您提供变量名称。