【发布时间】:2019-08-06 13:52:33
【问题描述】:
我创建了 40 多个表(使用 marco,我刚刚学会了如何操作),我想将 Proc Sort 语句应用于这些表。我希望每个表都按相同的变量“Account_Description”排序(每个表都包含这个变量)。
表名是 June_53410_v1、June_53420_v1、June_53430_v1 等。我可以使用宏吗?如果可以,我该如何减轻必须为每个表编写 proc 排序语句的情况?
谢谢!
我在网上找到了这个示例代码,但我不确定它是如何工作的
%Macro sorter(dsn, var);
proc sort data=&dsn.;
by &var.;
run;
%mend;
%sorter(sample_dataset, age);
【问题讨论】:
-
我正在阅读这篇文章,并且真的认为您所做的任何事情都可能不应该使用宏,而应该由组处理使用。你知道你可以有多个 BY 变量吗?无论哪种方式,这里都有一个关于将工作程序更改为宏以及如何为所有值运行它的教程,以这种方式创建宏是相当防错的。 github.com/statgeek/SAS-Tutorials/blob/master/…
-
可能会猜测表结构相同或高度相似,在这种情况下,一个非常有效的方案是将所有数据堆叠在一个数据集中并添加一个或多个列来迁移'数据' month name number version 到单个表中。此时,您可以利用诸如
BYCLASSWHERE之类的 SAS 功能在一个步骤中执行大量分组处理,或对一组选定的“表”执行分组处理 -
这是一次性任务吗?为什么不直接复制 PROC SORT 步骤 40 次并更改数据集名称?或者,如果您要再次运行原始宏,只需将代码添加到原始宏,以便它以正确的排序顺序生成数据集。
-
请检查,正确答案
标签: sas