Sas 使用“输出数据文件”;把「;

Sas 使用“输出数据文件”;把「;,sas,Sas,我是SAS新手,在分隔数据文件的输出中使用put,但有几个问题 在输出中,在分隔符和数据之间生成一个空格。这个空间可以消除吗 在我的代码中如何合并replace?我试过了,代码错误就消失了 任何帮助都将不胜感激 谢谢 data _null_; set datain_20130108; file 'C:\data\dataout_20130108.dlm'; put "!" id "|" var1 "|" var2 "|" var3 "|" var4 "|" var5 "|" var6 "~";

我是SAS新手,在分隔数据文件的输出中使用
put
,但有几个问题

  • 在输出中,在分隔符和数据之间生成一个空格。这个空间可以消除吗
  • 在我的代码中如何合并
    replace
    ?我试过了,代码错误就消失了
  • 任何帮助都将不胜感激

    谢谢

    data _null_; 
    set datain_20130108;
    file 'C:\data\dataout_20130108.dlm';
    put "!" id "|" var1 "|" var2 "|" var3 "|" var4 "|" var5 "|" var6 "~";
    run;
    
    关于空格,请在变量名后使用+(-1),如下所示

    put "!" id+(-1);
    
    关于替换,我不理解你的问题。请参阅以下替换文档的链接。

    如果您的意思是替换,则不能在PUT语句中使用替换。您需要创建一个新变量(使用您需要的任何函数),然后在PUT语句中使用该变量。

    为什么不以正常方式输出一个带分隔符的文件?您必须做一些愚蠢的事情来获取前导/尾随字符(我很好奇为什么它们会存在),但这可能比手动分隔文件要简单

    data _null_; 
    set datain_20130108;
    file 'C:\data\dataout_20130108.dlm' dlm='|';
    idtemp= cats("!", id);
    vartemp=cats(var6,'~');
    put  id $ var1 var2 var3 var4 var5 var6 $;
    run;
    
    替换可能来自于使用PROC导出的某些指令。如果在PROC导出时没有“替换”,则不会覆盖文件。SAS数据步骤将替换文件而不需要此选项

    proc export data=datain_20130108 file='C:\data\dataout_20130108.dlm' dbms=dlm replace;
    delimiter='|';run;
    

    但是,这不会在开头和结尾提供额外的字符,我强烈建议不要对分隔文件使用PROC EXPORT,除非它只是一次性的-它会为您做出各种决定,您最好自己做(格式化等),而且实际上并不比PUT版本容易多少。

    正如Aaron所说,你问题的第二部分不清楚。“替换”是什么意思?如果您尝试了某些操作,请在出现任何错误消息时发布代码。感谢您提供上述代码。至于“替换”,我似乎不需要在数据步骤中使用它。