我对此有点困惑,希望你能帮我。
我使用 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 字符变量是固定长度的,并且始终用空格填充到其完整长度。因此,空格永远不会从数据中删除。
LENGTH() 函数只是告诉您变量中最后一个非空格字符的位置。
我希望您的意思是您想要编写一个新的文本文件。 SAS 几乎可以写入任何类型的文本文件,因此如果您无法弄清楚如何创建所需的输出,只需解释一下您想要写入的内容即可。
因此,如果您想写出全部 261 个字符,那就这样做吧。
data _null_;
set have;
file 'new_text_file' ;
put reg_full $char261. ;
run;
还有其他方法。例如,在写入文本文件时,您可以在 FILE 语句上使用 PAD 选项,SAS 会自动将所有带有空格的输出行填充到 FILE 语句的 LRECL= 选项定义的完整长度。