我们如何使用%sysfunc来计算数字变量的均值?

时间:2019-01-25 21:32:21

标签: macros sas

我正在尝试计算宏标题中数字变量的平均值。代码如下:

title "Using sysfunc to evaluate mean %sysfunc((mean(Total_retail_price)) )"

出现错误提示:

  

错误:%SYSFUNC或%QSYSFUNC宏函数参考中缺少函数名称。

感谢您的帮助!

编辑:

%macro type(year=,type=);

proc print data=salesxls ;

title " using sysfunc to evaluate  mean %sysfunc((mean(Total_retail_price)) )";

where year(order_date)=&year. and Order_type=&type;

format order_date year4.;

run;
%mend type;

p.s新手在这里

2 个答案:

答案 0 :(得分:3)

SAS在那种情况下无法识别变量df.loc[:,~df.T.duplicated(keep='first')] Column A Column B Column D Column E 0 1.0 7 13 13 1 2.0 8 14 13 2 3.0 9 15 13 3 4.0 10 16 13 4 NaN 11 17 13 5 6.0 12 1 13 ,因此大多数统计函数都无法以这种方式调用。

您需要将平均值分配给宏变量。这是一个例子。

Total_Retail_Price

现在,您可以在标题中添加新的宏变量proc sql noprint; select mean(Total_Retail_Price) into: mean_value from salesxls where year(order_date)=&year. and Order_type=&type; quit;

mean_value

现在完整的宏如下所示:

title "The mean of Total Retail Price is: &mean_value.";

答案 1 :(得分:1)

对于多个组,单个宏变量将无用。

可以使用特殊标记在BY语句中显示TITLE变量名或值-#BYVAL<n>#BYVAR<n>#BYVAL(<var>)和{{1 }}。

创建一个#BYVAR(<var>),其中包含一列价格均值,以使其成为一个按变量。在view语句中使用该列,在by中使用特殊令牌。

title

列出

proc sql;
  create view work.cars_v as select 
  cars.*
  , mean(msrp) as mean_price format=dollar7. /* automatic remerge */
  from sashelp.cars
  group by Make,Type
  ;

options nocenter nobyline;

proc print data=work.cars_v;
  title "#byval(make) #byval(Type), Average MSRP:#byval(mean_price)";
  by Make Type mean_price;
  var Model Origin DriveTrain EngineSize Cylinders MSRP;
run;