Sas 从多行读入单行,直到遇到分隔符为止
我一直在尝试读取一个文本文件,该文件的行如下,分隔符为分号:Sas 从多行读入单行,直到遇到分隔符为止,sas,sas-macro,Sas,Sas Macro,我一直在尝试读取一个文本文件,该文件的行如下,分隔符为分号: Sun rises in the east and; sets in the west ; 我正在尝试从一个分隔符到另一个分隔符读取数据,如下所示 变量名称 1 Sun rises in the east and 2 sets in the west 我尝试了infle选项中几乎所有可用的选项,但都没有成功。可以这样读吗?怎么做?任何线索/帮助都将不胜感激。逐字阅读并连成较长的行 data want ; infile
Sun rises
in the east
and;
sets in the
west
;
我正在尝试从一个分隔符到另一个分隔符读取数据,如下所示
变量名称
1 Sun rises in the east and
2 sets in the west
我尝试了
infle
选项中几乎所有可用的选项,但都没有成功。可以这样读吗?怎么做?任何线索/帮助都将不胜感激。逐字阅读并连成较长的行
data want ;
infile mydat end=eof ;
length word $200 line $2000 ;
drop word;
do while (^eof and ^index(word,';'));
input word @ ;
line = catx(' ',line,compress(word,';'));
end;
if _n_ > 1 or line ne ' ' then output;
run;
recfm=n
是告诉SAS不要有“换行符”的方法。因此:
data want;
infile "c:\temp\test.txt" recfm=n dsd dlm=';';
length text $1024;
input text $;
run;
请注意,换行符将被读取为另外两个字符,因此如果要删除这些字符,可以使用
compress
和c
选项删除控制字符(包括LF/FF) 张贴您尝试过的内容使用lrecl、linesize、@@all尝试过很多方法,但都没有给出正确的结果。看起来您不在乎是否将多个空格压缩为一个空格?这样,'east and'
就变成了'east and'
。如果是这样的话,那就用这个词逐字读,当这个词包含分隔符时就停下来。谢谢乔。这很有帮助。使用compress,也删除了所需的字符,我使用tranward删除了“0D”x和“0A”x。这当然是一个合理的解决方案transtrn
可能是最好的翻译功能,但任何一个都可以。感谢Tom抽出时间。这也是一个很好的黑客解决方案。