有没有一种方法可以使观察中的第一个分隔符与其他分隔符不同?在 SQL Server Integration Services (SSIS( Microsoft中,有一个选项可以设置每列的分隔符。 我想知道在 SAS 中是否有类似的方法可以通过修改以下代码来实现这一点,其中第一个分隔符将改为制表符,其余为管道:
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 之间的大空间是一个制表符。
提前非常感谢。
听起来你只是想创建一个结合了前两个变量的新变量,然后使用制表符分隔符将其写出来。
data fix ;
length new1 $50 ;
set have ;
new1=catx('09'x,var1,var2);
drop var1 var2 ;
run;
proc export data=fix ... delimiter='|' ...
请注意,您可以在数据步骤中 FILE
语句的 DLM=
选项中引用变量。
data _null_;
dlm='09'x ;
file 'outfile.txt' dsd dlm=dlm ;
set have ;
put var1 @ ;
dlm='|' ;
put var2-var4 ;
run;
或者,您可以在data _null
步骤中使用catx()
技巧。您可能还希望使用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;
更新了固定分隔符顺序以匹配问题。
基于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;