什么是SAS宏?17 Mar 2025 | 5 分钟阅读 SAS提供了一个强大的编程特性,称为宏。 宏主要用于在不同地方多次重用代码,这样我们就无需重复键入整个代码。 它不仅减少了时间,还生成了无错代码。 宏由一组SAS语句组成,这些语句由一个特定的名称指定,以便可以通过使用该名称在程序的任何位置使用它。它的语法以%Macro语句开始,以%MEND语句结束。 宏也可以在代码块中声明,以便可以将块多次重用于宏变量中。 ![]() 创建宏的语法 调用宏的语法 其中,
让我们通过一个例子来理解宏 这里我们创建了两个数据集。一个是一个样本,另一个是一个演示。要运行这些数据集,我们需要在两个数据集中使用proc print语句。这个proc print语句将在同一个程序中被写入两次,因此代码的长度将不必要地增加。为了减少这种不必要的长度,我们使用宏。 在下面的代码中,我们将创建一个由pri指定的宏,用于proc print语句。 示例这是一个没有宏的常规代码 通过使用宏,我们可以重用这个proc print语句。在下面的代码中,我们正在为proc print语句创建宏pri,以便我们可以在需要的地方使用它。 SAS宏的优点
宏变量这些变量包含一个值,该值被SAS程序重复使用。我们可以在SAS程序的开头声明宏变量,并在程序的正文中稍后调用它们。 宏变量的作用域可以是全局或局部。 这些定义如下 全局宏变量全局宏变量可以被SAS环境中可用的任何SAS程序访问。通常,这些是系统分配的变量,可以被多个程序访问。全局宏变量的一个典型例子是系统日期。 示例 在下面的例子中,我们将使用全局SAS变量SYSDATE,它代表系统日期。 考虑这样一种情况:当生成报告时,我们需要每天在SAS报告的标题中打印系统日期。 标题将显示当前日期和星期几,而无需在代码中为它们提供任何值。这里我们使用SAS内置的数据集,称为CARS,它位于SASHELP库中。 当我们在SAS Studio中执行上述代码时,我们得到以下输出。 ![]() 局部宏变量局部变量只能在声明它们的SAS程序中访问。它们通常用于在同一SAS语句中提供不同的变量,以处理数据集的不同观察值。 语法 其中,
示例 宏变量可以通过在变量名称的开头附加字符&来声明。在下面的例子中,我们将声明两个局部变量,一个是make_name,另一个是type_name,以从CARS数据集中获取值。 考虑以下代码 当我们在SAS Studio中执行上述代码时,我们得到以下输出。 ![]() 常用宏SAS有许多内置的宏语句,可以在任何SAS程序中使用,而无需显式声明它们。以下是最常用的宏
宏 %PUT这个宏语句用于将文本或宏变量信息写入SAS日志。在下面的例子中,我们将变量“today”的值写入程序日志。 在 SAS Studio 中执行上述代码 ![]() 输出 ![]() 根据上面的代码,变量“today”的值"&sysdate"d,worddate22."已被写入程序日志。 宏 %RETURN当某个条件被评估为真时,这个宏语句用于终止当前正在执行的宏。在下面的例子中,如果值1被分配给变量var1,那么宏将停止执行,并且DATA步骤将不会执行。 在 SAS Studio 中执行上述代码 ![]() 输出 ![]() 根据上面的代码,条件已经被评估为真,因此执行宏被终止,并且数据步骤没有被执行。 宏 %END根据需要,这个宏语句用于结束一个%DO %WHILE循环。我们可以将它与%END语句一起使用。在下面的例子中,名为demo的宏接受输入1,并通过使用这个输入值来运行DO循环。DO循环以%End语句结束,而宏语句以%mend语句结束。 在 SAS Studio 中执行上述代码 ![]() 输出 ![]() 根据上面的代码,i的值已经被打印了5次,并且在完成5次之后,%End语句结束了%Do %While循环。 下一个主题SAS-频率分布 |
我们请求您订阅我们的新闻通讯以获取最新更新。