0

我试图抑制 HTML 输出并PROC PRINT仅输出到 CSV,但ODS HTML Close似乎不起作用。

我的代码是:

ODS HTML close;
ODS CSV file="\\..output folder..\filename.csv";
proc print data=test;
run;
ODS CSV close;
ODS HTML;
4

3 回答 3

1

您的方法似乎有点奇怪,为什么要使用 ods csv?SAS有一个proc导出程序:

proc export data=test outfile="\\..output folder..\filename.csv" dbms=CSV replace;
run;

您可以进一步将其配置为具有不同的分隔符、无标题等:http: //support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a000393174.htm

编辑 回复您的评论:我发现有两种方法可以解决使您无法尝试 proc 导出的问题。

第一种方法是将validvarname 设置为ANY,这使您可以自由选择变量名。例如:

options validvarname=ANY;
data test;
    'Column Header Text I Want'n=1; output;
    'Column Header Text I Want'n=5; output;
run;
proc export data=test outfile="\\..output folder..\filename.csv" dbms=CSV replace;
run;

就个人而言,我不喜欢上述方法,因为我发现当您不再有一些变量命名规则时,它会导致代码难以阅读。

第二种方法 - 我更喜欢 - 使用您希望它拥有的文本标记变量,并将标签选项放在您的 proc 导出中。例如:

data test;
    label variable_name='Column Header Text I want';
    variable_name=1; output;
    variable_name=5; output;
run;
proc export data=test outfile="\\..output folder..\filename.csv" dbms=CSV replace LABEL;
run;

请注意,输出中有一个小的区别:第一种方法不会在列名周围加上引号,而第二种方法会这样做。

最后,在自己做一些额外的阅读时,我偶然发现了这一点,这可能对你也有帮助:http: //www.sascommunity.org/wiki/Create_a_CSV_file_without_column_names/headers_in_row_1#DATA_NULL_with_a_PUT_statement.2C_all_fields_quoted

于 2013-07-12T08:07:31.073 回答
1

我一直在努力,终于为我找到了它。我想从结果查看器中抑制的内容就在下面(以及宏的结尾)。我在结果查看器中想要的结果,现在在最后调用了一个单独的宏...... Brubumski

  ODS HTML close;   * bsk;
  ods results off;  * bsk;
  ods csvall file="&file1";
  proc print data=tr_outds noobs; run;
  ods csvall close; * bsk;
  ods results on;   * bsk;
  ODS HTML;         * bsk;

  %OdsOn1(outds,outds2,tr_outds, file1, file2); * bsk;

%mend process_input_data_10_10;

%macro OdsOn1(outds,outds2,tr_outds, file1, file2); 
  proc freq data=outds;tables Group_nm/missing;run;
  proc freq data=outds2;tables case_id/missing;run;
  proc print data=tr_outds(obs=10) noobs; run;* bsk;

  ods csvall file="&file2";
  proc print data=cases noobs; run;
  ods csvall close; 
%mend OdsOn1;
于 2017-12-08T23:17:43.773 回答
0

啊,我发现了问题所在。结果窗口仍然会显示 HTML 输出,这会真正减慢程序的速度,因为它ODS HTML CLOSE似乎只影响到特定文件的输出,而不是结果窗口。

为了阻止这种情况,我应该ODS RESULTS OFF;改用。

ODS RESULTS OFF;
ODS CSV file="\\..output folder..\filename.csv";
proc print data=test;
run;
ODS CSV close;

编辑:似乎ODS RESULTS无法随意打开和关闭以仅导致某些PROC PRINT语句生成输出。这对我来说真的很烦人,所以我将采用 Shorack 的PROC EXPORT方法。

于 2013-07-12T07:41:09.817 回答