SAS如何在数据步骤期间在同一个变量中多次连接字符串
SAS How to concatenate strings several times in the same variable during a data step
一个非常基本的问题。
为什么我不能像这样更改数据步中的变量?
data want;
aaaaa='[';
aaaaa=cats(aaaaa,'hello');
aaaaa=cats(aaaaa,']');
put aaaaa;
run;
aaaaa will be equal to '[' , I expect '[hello]'
我需要分多步定义aaaaa
,因为我需要用do循环构造aaaaa
(长度不可预测),我不能一步定义aaaaa
.
谢谢!
当第一次调用 aaaaa 时,SAS 会为变量分配一个长度。在这种情况下 length aaaaa
因为你只分配了一个字符。 SAS 数据类型不是动态的。通过为变量分配一个覆盖最大预期长度的固定长度来启动数据步骤,例如
data want;
length aaaaa 0;
aaaaa='[';
aaaaa=cats(aaaaa,'hello');
aaaaa=cats(aaaaa,']');
put aaaaa;
run;
您可以将 attrib
或 format
语句添加到数据步:
data want;
attrib
aaaaa format=0.;
aaaaa='[';
aaaaa=cats(aaaaa,'hello');
aaaaa=cats(aaaaa,']');
put aaaaa;
run;
根据我的评论,这是使用 call cats
的另一种方法。
data want;
length aaaaa 0;
call cats(aaaaa,'[');
call cats(aaaaa,'Hello');
call cats(aaaaa,']');
run;
一个非常基本的问题。
为什么我不能像这样更改数据步中的变量?
data want;
aaaaa='[';
aaaaa=cats(aaaaa,'hello');
aaaaa=cats(aaaaa,']');
put aaaaa;
run;
aaaaa will be equal to '[' , I expect '[hello]'
我需要分多步定义aaaaa
,因为我需要用do循环构造aaaaa
(长度不可预测),我不能一步定义aaaaa
.
谢谢!
当第一次调用 aaaaa 时,SAS 会为变量分配一个长度。在这种情况下 length aaaaa
因为你只分配了一个字符。 SAS 数据类型不是动态的。通过为变量分配一个覆盖最大预期长度的固定长度来启动数据步骤,例如
data want;
length aaaaa 0;
aaaaa='[';
aaaaa=cats(aaaaa,'hello');
aaaaa=cats(aaaaa,']');
put aaaaa;
run;
您可以将 attrib
或 format
语句添加到数据步:
data want;
attrib
aaaaa format=0.;
aaaaa='[';
aaaaa=cats(aaaaa,'hello');
aaaaa=cats(aaaaa,']');
put aaaaa;
run;
根据我的评论,这是使用 call cats
的另一种方法。
data want;
length aaaaa 0;
call cats(aaaaa,'[');
call cats(aaaaa,'Hello');
call cats(aaaaa,']');
run;