3

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

  1. 在输出中,分隔符和数据之间会生成一个空格。这个空间可以消除吗?
  2. 在我的代码中如何合并replace?我试过了,代码错误了。

任何帮助将不胜感激。

谢谢!

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

3 回答 3

2

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

put "!" id+(-1);

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

于 2013-01-09T14:04:55.600 回答
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 版本容易得多。

于 2013-01-09T15:19:27.173 回答
0

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

于 2013-01-09T14:20:25.113 回答