用SAS中的另一个字符替换连续的嵌入空格

Replacing consecutive embedded blanks with another character in SAS

我正在尝试用一个新字符替换我的一个变量 (QPR) 中的嵌入空格。这是我的(缩写)代码:

data sas2;
   input QPR $ & 1-9;
   QPR=tranwrd(strip(QPR)," ","0");
run;

proc print data=sas2;
run;

tranwrd 函数似乎适用于带有一个嵌入空白的观察;但是,当连续两个空格时,它不起作用。

例如,234 2345 变为 23402345,但 234 345 变为 234(即,其余部分被切断,我假设是因为 strip ).相反,我想要 23400345.

我也试过 tranwrd 没有 strip 功能,但我从 234 345 变成了 23400000Translate 做同样的事情。

关于为什么这不起作用以及如何解决它的任何想法?或者,在 data 步骤中是否有 easier/better 方法来执行此操作?

输入语句中的“&”符号导致 SAS 在两个空格后停止读取数据。 SAS 停止读取数据后,它用空格填充字符串的其余部分,总长度最多为 9 个字符。这就是为什么在不使用 strip 时字符串末尾有一堆零的原因。删除“&”应该可以解决问题。