数据步骤中的CAT与CATS循环

时间:2018-03-16 21:06:35

标签: sas do-loops

为什么以下代码有效(&ds12345678910),但当我将cats更改为cat时,&ds只是空白?我希望将cats更改为cat意味着&ds1 2 3 4 5 6 7 8 9 10

data new;
  length ds $500;
  ds = "";
  do i = 1 to 10;
    ds = cats(ds, i, " ");
  end;
  call symputx('ds', ds);
run;
%put &ds;

2 个答案:

答案 0 :(得分:2)

函数cat()不会修改值,所以如果你将任何内容连接到DS并尝试将它存回DS,那么你添加的任何内容都不会存储,因为没有空间它

看起来你真的想要catx()功能。

ds = catx(' ',ds, i);

答案 1 :(得分:0)

如果您使用输入缓冲区并进行文本操作,则SAS倾向于添加前导和尾随空格。您可以使用Strip()和catx()函数来删除前导和尾随空格。使用catx(),您可以选择指定分隔符。

ds = cat(strip(ds), i, " ");