sas - SAS Enterprise Guide - 根据标准将临时“WORK”表导出到同一工作簿中的多个工作表中
问题描述
我已经搜索和搜索,但我似乎无法找到解决方案。
我正在使用 8.2 Update 4 (8.2.4.1261)(32 位)。
有人可以帮我将表格导出到包含多张工作表的 Excel 文件中吗?
示例:表格包含美国职业运动队的列表(以及他们所在的城市/昵称和联赛)。每个选项卡将按联赛(NBA、MLB、NFL、NHL、MLS)分隔。我该怎么办?
我还想将当前日期添加到输出 Excel 文件名中。根据我的阅读,我可以使用 sysdate 创建一个变量。只是不确定如何将其合并到代码中。
解决方案
- 每个工作表名称都基于一个组。
- 在 SAS 中,我们使用
BY
语句来指定组成组的变量——在你的情况下,它是一个变量league
- 在 SAS 中,我们使用
- 该
BY
语句使特殊标记在输出期间可用,#BYVAR<n>
并且#BYVAL<n>
- 您希望
league
在输出期间的值很重要(工作表名称),所以#BYVAL1
- 您希望
ODS EXCEL
工作表名称构造在OPTIONS
选项中指定。您可以BY
在选项中使用令牌。- 你要
ODS EXCEL ... OPTIONS (sheet_name="#BYVAL1") ...;
- 你要
- 输出过程中的
BY
语句会产生额外的一行<BYVAR>=<BYVAL>
,这将在您的 Excel 输出中 产生干扰。- 防止噪音
OPTIONS NOBYLINE;
- 防止噪音
例子:
ods excel file='output.xlsx' options(sheet_name="#BYVAL1");
options nobyline;
proc print noobs data=sashelp.cars;
by make;
run;
ods excel close;
生产
更多的
如果您希望BY
变量出现在PROC PRINT
输出中,请使用VAR _ALL_;
语句,或明确列出所需的列。
如果您需要导入和合并在 Excel 中编辑的数据,或者您正在制作各种图表等,则将变量添加BY
到输出中将使事情变得更容易。实际上,如果您在 Excel 中进行其他工作,最好生成一个包含所有数据的工作表,然后使用自动过滤器(这是一个ODS EXCEL
选项)和 Excel 数据透视表/图表。(Proc可以TABULATE
做REPORT
数据透视表可以做的一个很大的子集。)
推荐阅读
- javascript - 总结 texboxes 列并使用 JavaScript 在文本框中显示
- android - 我们可以在android中使用字符串资源进行代码注释吗?
- scala - 我是否正确使用(Scala)泛型?
- mdx - 在 MDX 中使用 RANK 功能时是否可以显示运动?
- docusignapi - 使用不同的登录凭据连接到 DocuSign API 的问题
- asp.net-mvc - 托管一个 ASP.net MVC 网站并从外部访问它
- maven - Maven Cobertura 忽略命令行中的琐碎
- php - PHP - ftp_put(): 文件不存在 - 但它存在吗?
- reporting-services - 根据值向下钻取 SSRS 报告中的列
- reactjs - Hyperledger Composer 的前端?