我有一个带有名称和字符串的数据,我想将所有字符串(col1,col2等)添加到一列中。 字符串的数量不固定,有时可能或多或少。 我可以用catx做到这一点,但不知道如何用数组实现这一点。 以下是我的数据集。请指南。
data a;
input name$ col1$ col2$ col3$ col4$;
DATALINES;
Harry abc dcd vgd bvd
peter cvc fgf ghg ghh
John fgg ftg uty gfdg
sheyala fgf jty fhf fgr
;
run;
这是我的代码:
data test;
length result $50;
set a;
result=Compress(catx(';',of col1-col4),'0D0A'x);
run;
但是字符串的数量并不固定。
谢谢&问候, 桑杰
答案 0 :(得分:0)
您可以定义具有未确定数量的元素的数组。这假设您的所有列都以col
开头。
data test;
length result $50;
set a;
array c[*] col:;
result = "";
do i=1 to dim(c);
result = Compress(catx(';',result,c[i]),'0D0A'x);
end;
drop i;
run;
col:
告诉SAS您希望所有以col
开头的变量和数组中的[*]
告诉SAS定义元素本身的数量。使用dim()
函数获取该数字并循环显示值。
修改强>
如评论中所述,以下方法也有效。
不使用数组:
data test;
length result $50;
set a;
result = Compress(catx(';',of col:),'0D0A'x);
run;
或者如果你还想要数组:
data test;
length result $50;
set a;
array c[*] col:;
result = Compress(catx(';',of c[*]),'0D0A'x);
run;