用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
变成了 23400000
。 Translate
做同样的事情。
关于为什么这不起作用以及如何解决它的任何想法?或者,在 data
步骤中是否有 easier/better 方法来执行此操作?
输入语句中的“&”符号导致 SAS 在两个空格后停止读取数据。 SAS 停止读取数据后,它用空格填充字符串的其余部分,总长度最多为 9 个字符。这就是为什么在不使用 strip 时字符串末尾有一堆零的原因。删除“&”应该可以解决问题。
我正在尝试用一个新字符替换我的一个变量 (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
变成了 23400000
。 Translate
做同样的事情。
关于为什么这不起作用以及如何解决它的任何想法?或者,在 data
步骤中是否有 easier/better 方法来执行此操作?
输入语句中的“&”符号导致 SAS 在两个空格后停止读取数据。 SAS 停止读取数据后,它用空格填充字符串的其余部分,总长度最多为 9 个字符。这就是为什么在不使用 strip 时字符串末尾有一堆零的原因。删除“&”应该可以解决问题。