【发布时间】:2015-12-04 03:13:45
【问题描述】:
我正在尝试使用 SAS 在文本文件中将分隔符从逗号更改为管道。输入文件中的数据看起来像-
Site,Variable,20151120010000,5.82,1,1,Project|Code|comment
Site,Variable,20151120020000,5.82,1,1,Project|Code|comment
Site,Variable,20151120030000,5.81,1,1,Project|Code|comment, out of service
我想将逗号(分隔符)更改为管道,但如果有逗号(例如在最后一行),我不想将其更改为管道。基本上项目|代码|评论,停止服务是一列。我正在使用下面的代码(如堆栈溢出成员所建议的那样)-
%let flname1=D:\temp\comma_file_%sysfunc(today(),yymmddn8.).txt;
%put &=flname1;
%let flname2=D:\temp\pipe_file_%sysfunc(today(),yymmddn8.).txt;
%put &=flname2;
data _null_;
length x1-x9 $200;
infile "&flname1" dsd dlm=',' truncover;
file "&flname2" dsd dlm='|';
input x1-x9;
put x1-x9;
run;
我使用这段代码得到的输出看起来像-
Site|Variable|20151120010000|5.82|1|1|"Project|Code|comment"||
Site|Variable|20151120020000|5.82|1|1|"Project|Code|comment"||
Site|Variable|20151120030000|5.81|1|1|"Project|Code|comment"|out of service|
我希望输出看起来像-
Site|Variable|20151120010000|5.82|1|1|Project|Code|comment
Site|Variable|20151120020000|5.82|1|1|Project|Code|comment
Site|Variable|20151120030000|5.81|1|1|Project|Code|comment,out of service
这可能很简单,但我才刚刚开始学习 SAS。非常感谢任何帮助。
【问题讨论】:
-
我很惊讶最后一个字段没有用引号引起来,当字段在变量值中嵌入分隔符时,通常最好将其放在引号中。