避免 sas 删除尾随空格

问题描述 投票:0回答:1

我对此有点困惑,希望你能帮我。

我使用 infile 获取了一个 txt 文件。每行的长度为 261,但我只需要前 162。问题是最后 5 个字符是空白,但我需要保留它们以便稍后导出整个变量(经过几个步骤和检查)。

data t1;
    infile "&path./&file_name..txt" lrecl=261 firstobs=2;
    input   REG_FULL     $   1-261
        REG_ENVIO    $   1-162
        CODNUM       $ 129-138
        CONTRATO     $  23-31
        FECHA_ENVIO  $  32-39
        ;
run;
data t1_check; set t1; kk=length(REG_ENVIO); run; /*here I realized it was trucated to 157*/

提前致谢。

sas truncate trailing
1个回答
0
投票

SAS 字符变量是固定长度的,并且始终用空格填充到其完整长度。因此,空格永远不会从数据中删除。

LENGTH() 函数只是告诉您变量中最后一个非空格字符的位置。

我希望您的意思是您想要编写一个新的文本文件。 SAS 几乎可以写入任何类型的文本文件,因此如果您无法弄清楚如何创建所需的输出,只需解释一下您想要写入的内容即可。

因此,如果您想写出全部 261 个字符,那就这样做吧。

data _null_;
  set have;
  file 'new_text_file' ;
  put reg_full $char261. ;
run;

还有其他方法。例如,在写入文本文件时,您可以在 FILE 语句上使用 PAD 选项,SAS 会自动将所有带有空格的输出行填充到 FILE 语句的 LRECL= 选项定义的完整长度。

© www.soinside.com 2019 - 2024. All rights reserved.