SAS如何在数据步骤中在同一变量中多次连接字符串

时间:2016-07-14 08:49:35

标签: sas datastep

一个非常基本的问题。

为什么我不能像这样更改datastep中的变量?

data want;
   aaaaa='[';
   aaaaa=cats(aaaaa,'hello');
   aaaaa=cats(aaaaa,']');
   put aaaaa;
run;
  aaaaa等于' [' ,我希望' [你好]'

我需要在多个步骤中定义aaaaa,因为我需要使用do循环构建aaaaa(长度不可预测),我只需一步即可定义aaaaa

谢谢!

3 个答案:

答案 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)

您可以将attribformat语句添加到数据步骤:

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;