【发布时间】:2018-03-06 05:25:09
【问题描述】:
我希望在 SAS 中创建一个宏,它将计算数据集中任意数量的数值变量(变量是参数,由用户输入)的平均值。我只知道如何一一输入变量,不确定如何设置,以便在调用宏时可以输入任意数量的变量,谢谢。
现在我有代码
%macro meanStat/parmbuff;
%put Syspbuff contains: &syspbuff;
proc means data = sashelp.baseball mean;
var &syspbuff;
%mend meanStat;
%meanStat(hits, runs)`
我得到了错误:
错误 22-322:语法错误,需要以下之一:名称、;、/、ALL、CHARACTER、CHAR , 数字。
我也应该使用“parmbuff”
【问题讨论】:
-
为什么必须是宏?为什么不能使用
proc summary?如果您提供一个虚拟示例来说明您的输入和预期输出是什么样的,也许会更容易为您提供帮助。 -
如果 variables 是指典型的 SAS 意义(即数据集列),那么您可能需要查看
array。 -
好的,我用一些更新的信息/我现在拥有的信息编辑了这个问题,如果有帮助的话。它必须是一个宏,用于赋值。
-
如何输入变量名?他们正在被验证吗?如果作业是需要 syspbuff 的作业,我会说这是一个糟糕的问题。使用 OPTIONS MPRINT 运行代码,日志将显示您需要从 SYSPBUFF 中删除括号和逗号。您可以使用 %SYSFUNC(COMPRESS(...)) 在 &SYSPBUFF 上调用 COMPRESS 函数(其目的是从值中删除字符)