一个很基础的问题。
为什么我不能像这样更改数据步中的变量?
data want;
aaaaa='[';
aaaaa=cats(aaaaa,'hello');
aaaaa=cats(aaaaa,']');
put aaaaa;
run;
aaaaa 将等于 '[' ,我期望 '[hello]'
我需要aaaaa
在多个步骤中定义,因为我需要aaaaa
使用 do 循环(具有不可预测的长度)来构建,我不能aaaaa
一步定义。
谢谢!
首次调用 aaaaa 时,SAS 将为变量分配一个长度。在这种情况下length aaaaa $1
,您只分配一个字符。SAS 数据类型不是动态的。通过为您的变量分配一个覆盖最大预期长度的固定长度来开始您的数据步骤,例如
data want;
length aaaaa $300;
aaaaa='[';
aaaaa=cats(aaaaa,'hello');
aaaaa=cats(aaaaa,']');
put aaaaa;
run;
您可以在数据步骤中添加attrib
或format
声明:
data want;
attrib
aaaaa format=$200.;
aaaaa='[';
aaaaa=cats(aaaaa,'hello');
aaaaa=cats(aaaaa,']');
put aaaaa;
run;
根据我的评论,这是使用call cats
.
data want;
length aaaaa $300;
call cats(aaaaa,'[');
call cats(aaaaa,'Hello');
call cats(aaaaa,']');
run;