一个非常基本的问题。
为什么我不能像这样更改datastep中的变量?
data want;
aaaaa='[';
aaaaa=cats(aaaaa,'hello');
aaaaa=cats(aaaaa,']');
put aaaaa;
run;
aaaaa等于' [' ,我希望' [你好]'
我需要在多个步骤中定义aaaaa
,因为我需要使用do循环构建aaaaa
(长度不可预测),我只需一步即可定义aaaaa
谢谢!
答案 0 :(得分:3)
首次调用aaaaa时,SAS会为变量分配一个长度。在这种情况下length aaaaa $1
,因为您只分配一个字符。 SAS数据类型不是动态的。通过为变量分配一个覆盖最大预期长度的固定长度来启动datastep,例如
data want;
length aaaaa $300;
aaaaa='[';
aaaaa=cats(aaaaa,'hello');
aaaaa=cats(aaaaa,']');
put aaaaa;
run;
答案 1 :(得分:1)
您可以将attrib
或format
语句添加到数据步骤:
data want;
attrib
aaaaa format=$200.;
aaaaa='[';
aaaaa=cats(aaaaa,'hello');
aaaaa=cats(aaaaa,']');
put aaaaa;
run;
答案 2 :(得分:0)
根据我的评论,这是使用call cats
的替代方式。
data want;
length aaaaa $300;
call cats(aaaaa,'[');
call cats(aaaaa,'Hello');
call cats(aaaaa,']');
run;