数据步循环中的 CAT 与 CATS
CAT vs CATS in data step do loop
为什么下面的代码有效(&ds
是 12345678910
),但是当我将 cats
更改为 cat
时,&ds
只是空白?我希望将 cats
更改为 cat
意味着 &ds
是 1 2 3 4 5 6 7 8 9 10
.
data new;
length ds 0;
ds = "";
do i = 1 to 10;
ds = cats(ds, i, " ");
end;
call symputx('ds', ds);
run;
%put &ds;
函数 cat()
不会 trim 值,因此如果您将任何内容连接到 DS
并尝试将其存储回 DS
,您添加的任何内容都不会存储因为没有空间了。
看来您确实需要 catx()
函数。
ds = catx(' ',ds, i);
如果您使用输入缓冲区并进行文本操作,SAS 往往会添加前导和尾随空格。您可以使用 Strip() 和 catx() 函数来删除前导空格和尾随空格。使用 catx() 您可以额外选择指定分隔符。
ds = cat(strip(ds), i, " ");
为什么下面的代码有效(&ds
是 12345678910
),但是当我将 cats
更改为 cat
时,&ds
只是空白?我希望将 cats
更改为 cat
意味着 &ds
是 1 2 3 4 5 6 7 8 9 10
.
data new;
length ds 0;
ds = "";
do i = 1 to 10;
ds = cats(ds, i, " ");
end;
call symputx('ds', ds);
run;
%put &ds;
函数 cat()
不会 trim 值,因此如果您将任何内容连接到 DS
并尝试将其存储回 DS
,您添加的任何内容都不会存储因为没有空间了。
看来您确实需要 catx()
函数。
ds = catx(' ',ds, i);
如果您使用输入缓冲区并进行文本操作,SAS 往往会添加前导和尾随空格。您可以使用 Strip() 和 catx() 函数来删除前导空格和尾随空格。使用 catx() 您可以额外选择指定分隔符。
ds = cat(strip(ds), i, " ");