Macros 如何使用%sysfunc计算数值变量的平均值?

Macros 如何使用%sysfunc计算数值变量的平均值?,macros,sas,Macros,Sas,我试图计算宏标题中数值变量的平均值。代码如下所示: title "Using sysfunc to evaluate mean %sysfunc((mean(Total_retail_price)) )" %macro type(year=,type=); proc sql noprint; select mean(Total_Retail_Price) into: mean_value from salesxls where year(order_date)=&year. and O

我试图计算宏标题中数值变量的平均值。代码如下所示:

title "Using sysfunc to evaluate mean %sysfunc((mean(Total_retail_price)) )"
%macro type(year=,type=);
proc sql noprint;
select mean(Total_Retail_Price) into: mean_value
from salesxls
where year(order_date)=&year. and Order_type=&type;
quit;

proc print data=salesxls ;    
title "The mean of Total Retail Price is: &mean_value."; 
where year(order_date)=&year. and Order_type=&type;    
format order_date year4.;
run;
%mend type;
它给出的错误是:

错误:%SYSFUNC或%QSYSFUNC宏函数引用中缺少函数名

感谢您的帮助

编辑:


p、 s的新手在此

SAS不识别该上下文中的变量
零售价格总额
,大多数统计函数不能以这种方式调用

您需要将平均值指定给宏变量。这里有一个例子

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

title "The mean of Total Retail Price is: &mean_value.";
现在,整个宏将如下所示:

title "Using sysfunc to evaluate mean %sysfunc((mean(Total_retail_price)) )"
%macro type(year=,type=);
proc sql noprint;
select mean(Total_Retail_Price) into: mean_value
from salesxls
where year(order_date)=&year. and Order_type=&type;
quit;

proc print data=salesxls ;    
title "The mean of Total Retail Price is: &mean_value."; 
where year(order_date)=&year. and Order_type=&type;    
format order_date year4.;
run;
%mend type;

SAS在该上下文中不识别变量
Total\u Retail\u 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\u value
添加到标题中

title "The mean of Total Retail Price is: &mean_value.";
现在,整个宏将如下所示:

title "Using sysfunc to evaluate mean %sysfunc((mean(Total_retail_price)) )"
%macro type(year=,type=);
proc sql noprint;
select mean(Total_Retail_Price) into: mean_value
from salesxls
where year(order_date)=&year. and Order_type=&type;
quit;

proc print data=salesxls ;    
title "The mean of Total Retail Price is: &mean_value."; 
where year(order_date)=&year. and Order_type=&type;    
format order_date year4.;
run;
%mend type;

对于多个组的情况,单个宏变量将不起作用

BY
变量名或值可以使用特殊标记显示在
标题
语句中--
#BYVAL
#BYVAR
#BYVAL()
#BYVAR()

创建一个带有价格平均值列的
视图
,这样它将是一个by变量。在
by
语句中使用该列,在
标题中使用特殊标记

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;
上市

--------------------------------------------------------------------------------------------------

Acura SUV, Average MSRP:$36,945

                               Drive    Engine
     Obs    Model    Origin    Train     Size     Cylinders        MSRP

       1     MDX      Asia      All       3.5         6         $36,945

--------------------------------------------------------------------------------------------------

Acura Sedan, Average MSRP:$34,772

                                                 Drive    Engine
     Obs    Model                      Origin    Train     Size     Cylinders        MSRP

       2    RSX Type S 2dr              Asia     Front      2.0         4         $23,820
       3    TSX 4dr                     Asia     Front      2.4         4         $26,990
       4    TL 4dr                      Asia     Front      3.2         6         $33,195
       5    3.5 RL 4dr                  Asia     Front      3.5         6         $43,755
       6    3.5 RL w/Navigation 4dr     Asia     Front      3.5         6         $46,100

--------------------------------------------------------------------------------------------------

Acura Sports, Average MSRP:$89,765

                                                Drive    Engine
     Obs            Model             Origin    Train     Size     Cylinders        MSRP

       7    NSX coupe 2dr manual S     Asia     Rear       3.2         6         $89,765

--------------------------------------------------------------------------------------------------

etc …

对于多个组的情况,单个宏变量将不起作用

BY
变量名或值可以使用特殊标记显示在
标题
语句中--
#BYVAL
#BYVAR
#BYVAL()
#BYVAR()

创建一个带有价格平均值列的
视图
,这样它将是一个by变量。在
by
语句中使用该列,在
标题中使用特殊标记

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;
上市

--------------------------------------------------------------------------------------------------

Acura SUV, Average MSRP:$36,945

                               Drive    Engine
     Obs    Model    Origin    Train     Size     Cylinders        MSRP

       1     MDX      Asia      All       3.5         6         $36,945

--------------------------------------------------------------------------------------------------

Acura Sedan, Average MSRP:$34,772

                                                 Drive    Engine
     Obs    Model                      Origin    Train     Size     Cylinders        MSRP

       2    RSX Type S 2dr              Asia     Front      2.0         4         $23,820
       3    TSX 4dr                     Asia     Front      2.4         4         $26,990
       4    TL 4dr                      Asia     Front      3.2         6         $33,195
       5    3.5 RL 4dr                  Asia     Front      3.5         6         $43,755
       6    3.5 RL w/Navigation 4dr     Asia     Front      3.5         6         $46,100

--------------------------------------------------------------------------------------------------

Acura Sports, Average MSRP:$89,765

                                                Drive    Engine
     Obs            Model             Origin    Train     Size     Cylinders        MSRP

       7    NSX coupe 2dr manual S     Asia     Rear       3.2         6         $89,765

--------------------------------------------------------------------------------------------------

etc …

你们所拥有的和应该输出的只是试图在标题中输出一个数字变量的平均值,@Kiran请参见编辑,谢谢你们的帮助,以便有人理解。什么是Total_retail_Price这是数据中使用的一个数字变量您拥有什么以及应该输出什么只是试图在标题中输出一个数字变量的平均值,@Kiran请参阅编辑,感谢您的帮助,以便有人理解。什么是总零售价格?它是所用数据中的数字变量