SAS:将数据子集导出为Excel中的单独工作簿选项卡

时间:2016-08-16 21:03:47

标签: sas export export-to-excel

问题:如何在不运行PROC EXPORT几次的情况下将数据集的子集导出到Excel工作簿的各个选项卡(最好是.xlsx)?

我的解决方案

数据集包含15个指标。不幸的是,指标没有可以编入索引的名称。这意味着我不能将导出过程放入一个循环计数器15次的宏,并将名称附加索引。指标(不是真的)像"汽车","卡车","自行车","恐龙"等等。

我提出的解决方案是这样的:

proc export data = data_set 
                (where = (indicator = "car"))
            outfile = "c:\workbook.xlsx"
            dbms = xlsx replace;
            sheet = car;
run;

...

proc export data = data_set 
                (where = (indicator = "dinosaur"))
            outfile = "c:\workbook.xlsx"
            dbms = xlsx replace;
            sheet = dinosaur;
run;

然而,这显然是低效的,并且需要某种自动化。

2 个答案:

答案 0 :(得分:0)

您可以使用libname工具,这通常是proc export在后​​台使用的工具。

libname myexcel xlsx "c:\outwhatever\myfile.xlsx";  *can use XLSX if 9.4+ or EXCEL if earlier;

这给你一个普通的libname,就好像它是一个SAS libname,你可以这样写:

data myexcel.sheetname;
  set whatever;
run;

或使用PROC COPY或类似内容。

还有其他选项(例如,使用OLEDB或类似选项),但libname最简单。有关详细信息,请参阅the documentation

答案 1 :(得分:0)

如果你有SAS 9.4 ODS Excel非常简单和漂亮,请将sheet_interval选项设置为bygroup并为工作表名称添加前缀。

proc sort data=sashelp.class out=class;
by age;
run;

ods excel file='/folders/myfolders/sample.xlsx' options (sheet_interval='bygroup' sheet_label='Age');

proc print data=class noobs label;
by age;
run;

ods excel close;