是否有方法使观察中的第一个分隔符与其余分隔符不同?在Microsoft SQL Server Integration Services(SSIS)中,可以选择为每列设置分隔符。我想知道是否有类似的方法在SAS中实现这一点,修改了下面的代码,其中第一个分隔符将是tab而不是其余的管道:
proc export
dbms=csv
data=mydata.dataset1
outfile="E:\OutPutFile_%sysfunc(putn("&sysdate9"d,yymmdd10.)).txt"
replace
label;
delimiter='|';
run;
例如
自:
var1|var2|var3|var4
到
var1 var2|var3|var4
... var1和var2之间的大空间是一个标签。
非常感谢提前。
答案 0 :(得分:2)
听起来你只想制作一个新的变量,它结合了前两个变量,然后使用制表符分隔符将其写出来。
data fix ;
length new1 $50 ;
set have ;
new1=catx('09'x,var1,var2);
drop var1 var2 ;
run;
proc export data=fix ... delimiter='|' ...
请注意,您可以在数据步骤中DLM=
语句的FILE
选项中引用变量。
data _null_;
dlm='09'x ;
file 'outfile.txt' dsd dlm=dlm ;
set have ;
put var1 @ ;
dlm='|' ;
put var2-var4 ;
run;
或者您可以在catx()
步骤中使用data _null
技巧。您还可能希望使用vvalue()
函数来确保应用格式。
data _null_;
length newvar $200;
file 'outfile.txt' dsd dlm='|' ;
set have ;
newvar = catx('09'x,vvalue(var1),vvalue(var2));
put newvar var3-var4 ;
run;
已更新修正了与问题匹配的分隔符顺序。
答案 1 :(得分:0)
最终代码基于Tom的标记答案:
data _null_;
dlm='09'x ;
file "E:\outputfile_%sysfunc(putn("&sysdate9"d,yymmdd10.)).txt" dsd dlm=dlm ;
set work.have;
put
var1 @ ;
dlm='|';
put var2 var3 var4;
run;