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请参阅编辑,感谢您的帮助,以便有人理解。什么是总零售价格?它是所用数据中的数字变量