|
|
通过学习 PROC SQL 扩展您的 SAS 知识成为 SAS 程序员的一大好处是,您永远不会没有要学习的新东西。 SAS 经常为我们提供多种方法来产生相同的结果。 一个很好的例子是 DATA 步和 PROC SQL,它们都操作数据。 DATA 步非常强大且灵活,但 PROC SQL 也有其优势。 直到最近,我对 PROC SQL 的了解还非常有限。 但是对于 The Little SAS Book 的第六版,我们决定将 PROC SQL 的讨论从附录(谁阅读附录?)转移到本书的正文中。 这让我有机会了解更多有关 PROC SQL 的信息。 在开发我的程序时,我经常发现自己需要计算一个变量的平均值(或总和,或中位数,或其他),然后将该结果合并回我的 SAS 数据集。 这通常至少涉及几个 PROC 步骤和一个 DATA 步骤,但是使用 PROC SQL 我可以在一个步骤中获得相同的结果。 示例 考虑这个使用 SASHELP 库中的 Cars 数据集的示例。 其中,该数据集包含 400 多种不同品牌和车型的汽车型号的 2004 年建议零售价。 假设您想要一个数据集,其中包含该模型的品牌、型号、类型和 MSRP,以及相同品牌的所有汽车的中间 MSRP。 此外,您需要一个变量,该变量是该型号的 MSRP 与相同品牌的所有型号的中间 MSRP 之间的差值。 下面是 PROC SQL 代码,它将创建一个 SAS 数据集 MedianMSRP,并具有所需的结果: *Create summary variable for median MSRP by Make; PROC SQL;
QUIT; CREATE TABLE 子句简单地命名要创建的 SAS 数据集,而 FROM 子句命名要读取的 SAS 数据集。 SELECT 子句列出了要从旧数据集(品牌、型号、类型和 MSRP)中保留的变量以及新汇总变量的规范。 新变量 MedMSRP 是旧 MSRP 变量的中值,而新变量 MSRP_VS_Median 是 MSRP 减去 MSRP 中值。 GROUP BY 子句告诉 SAS 在变量 Make 的每个值内进行计算。 如果不使用 GROUP BY 子句,则计算将在整个数据集上完成。 当您运行此代码时,您将在 SAS 日志中收到以下消息,告诉您它正在按照您的意愿执行操作: NOTE: The query requires remerging summary statistics back with the original data. 以下 PROC PRINT 生成的报告仅显示两个品牌的观察结果-Porsche 和Jeep。 PROC PRINT DATA = MedianMSRP; RUN; 结果 结果如下: 现在,PROC SQL 爱好者会告诉您,如果您想要的只是一份报告,而您不需要创建 SAS 数据集,那么您只需在 PROC SQL 步骤中即可完成所有操作。 作者:Lora D. Delwiche 翻译:卡贝弗兰克
相关文章
|
站点地图|隐私政策|加入我们 |
Copyright ©2022 上海卡贝信息技术有限公司 All rights reserved. |