使用“put”输出数据文件

时间:2013-01-09 13:57:02

标签: sas

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

  1. 在输出中,在分隔符和数据之间生成空格。可以消除这个空间吗?
  2. 在我的代码中如何合并replace?我试过了,代码出错了。
  3. 非常感谢任何帮助。

    谢谢!

    data _null_; 
    set datain_20130108;
    file 'C:\data\dataout_20130108.dlm';
    put "!" id "|" var1 "|" var2 "|" var3 "|" var4 "|" var5 "|" var6 "~";
    run;
    

3 个答案:

答案 0 :(得分:2)

关于空格,请在变量名后使用+( - 1),如下所示。

put "!" id+(-1);

关于替换,我不明白你的问题。请参阅下面的替换文档的链接。 http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000131176.htm

答案 1 :(得分:2)

为什么不按正常方式放出分隔文件?你必须做一些愚蠢的事情来获得前导/尾随字符(我会非常好奇为什么它们存在)但它可能比手动分隔文件更简单。

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;

REPLACE可能来自某些使用PROC EXPORT的指令。如果PROC EXPORT上没有REPLACE,则不会覆盖文件。 SAS数据步骤将替换文件而无需选项。

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

然而,这不会在开头和结尾给你额外的字符,我强烈建议不要使用PROC EXPORT作为分隔文件,除非它只是一次性拍摄 - 它为你做出各种各样的决定你是最好自己制作(格式化等)并且真的不比PUT版本容易。

答案 2 :(得分:0)

如果这是你的意思,你将无法在PUT语句中使用REPLACE。您需要创建一个新变量(使用您需要的任何函数),然后在PUT语句中使用该变量。