数据步循环中的 CAT 与 CATS

CAT vs CATS in data step do loop

为什么下面的代码有效(&ds12345678910),但是当我将 cats 更改为 cat 时,&ds 只是空白?我希望将 cats 更改为 cat 意味着 &ds1 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, " ");