我试图抑制 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;
我试图抑制 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;
您的方法似乎有点奇怪,为什么要使用 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
我一直在努力,终于为我找到了它。我想从结果查看器中抑制的内容就在下面(以及宏的结尾)。我在结果查看器中想要的结果,现在在最后调用了一个单独的宏...... 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;
啊,我发现了问题所在。结果窗口仍然会显示 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
方法。