respect是什么意思-易燃物品
SAS
宏:
9
步法
SAS
宏主要
包括两部分:宏变量和宏函数
通过使用
SAS
宏,可以更加容易维护
SAS
代码,是程序更加灵活,动态执行。
一般来说,通过写宏函数
执行代码需要
9
个步骤
第
1
步:
写好程序,并且确保程序能够正确运行
proc means data=expenses mean;
var RoomRate;
run;
proc print data=expenses;
title 'Lowest Priced Hotels in the
EXPENSES Data Set';
footnote
'On June 1, 2003';
var ResortName
RoomRate Food;
where RoomRate<=221.109;
run;
宏功能使程序每次能够自动根据数据集的变化进行改变
第
2
步:
使用宏变量帮助文本替换
宏变量提供
文本替换,
这样可以使用简单的单词或者词组,
不需要大段的代
码。
宏变量包括:
自动宏变量,
用户自
定义宏变量
%let
,
在数据步或者<
/p>
sql
过程步使用的用户自定义宏变量
c
all
symput
。不管是如何创建宏变量,在程序中引用
宏变量通过
&
。
options symbolgen;
%let
dsn=expenses;
%let varlist=ResortName
RoomRate Food;
proc means data=&dsn
mean;
var RoomRate;
run;
%let average=221.109;
proc
print data=&dsn;
title
Data
Set
footnote
var &varlist;
where RoomRate<=&average;
run;
SYMBOLGEN
在日志
窗口中记录宏变量是如何解析的。
%let
创建宏变量
&
引用宏变量
SYSDATE9
宏变量
宏变量使得代码易于维护
第
3
步:
使用宏函数将数据集的名称变成大写
options symbolgen;
%let
dsn=expenses;
%let varlist=ResortName
RoomRate Food;
proc means data=&dsn
mean;
var RoomRate;
run;
%let average=221.109;
proc
print data=&dsn;
title
%upcase(&dsn) Data
Set
footnote
var &varlist;
where RoomRate<=&average;
run;
宏函数能够提高宏变量的功能
第
4
步:
<
/p>
从
SAS
数据集中创建宏变量
在宏变量中存储数据集变量,
是不能使用
%let
。
而应该使用
call symput
程序,
它只能在数据
步使用。
options symbolgen;
%let dsn=expenses;
%let
varlist=ResortName RoomRate Food;
proc
means data=&dsn noprint;
output
out=stats mean=avg;
var RoomRate;
run;
data _null_;
set stats;
dt=put(today(),mmddyy10.);
call symput('date',dt);
call
symput('average',put(avg,7.2));
run;
proc print data=&dsn;
title
%upcase(&dsn) Data
Set
footnote
var &varlist;
where RoomRate<=&average;
run;
宏变量能够从数据集中获取值
第
5
步:
将程序放在在宏定义中
%let
dsn=expenses;
%let varlist=ResortName
RoomRate Food;
%macro
vacation
;
proc
means data=&dsn noprint;
output
out=stats mean=avg;
var RoomRate;
run;
data _null_;
set stats;
dt=
put(today(),mmddyy10.);
call
symput('date',dt);
call
symput('average',put(avg,7.2));
run;
proc print data=&dsn;
title
%upcase(&dsn) Data
Set
footnote
var &varlist;
where RoomRate<=&average;
run;
%mend vacation;
options symbolgen mprint;
%vacation
宏定义使得代码重用性更好
第
6
步:
在宏函数中使用参数
%macro
vacation(
dsn,varlist
);
proc means
data=
&dsn
noprint;
output out=stats mean=avg;
var RoomRate;
run;
data _null_;
set stats;
dt=put(today(),mmddyy10.);
call symput('date',dt);
call
symput('average',put(avg,7.2));
run;
proc print
data=
&dsn
;
title
%upcase(
&dsn
)
Data Set
footnote
var
&varlist
;
where
RoomRate<=&average;
run;
%mend;
options symbolgen
mprint;
%
vacation
(expenses,ResortName RoomRate)
宏定义可以使用参数来更改和代码
第
7
步:
改变宏定义,为宏变量提供默认值
%macro
vacation(dsn=expenses,varlist=_all_);
proc means data=&dsn noprint;
output out=stats mean=avg;
var RoomRate;
run;
data _null_;
set stats;
dt=put(today(),mmddyy10.);
call symput('date',dt);
call
symput('average',put(avg,7.2));
run;
proc print data=&dsn;
title
%upcase(&dsn) Data
Set
footnote
var &varlist;
where RoomRate<=&average;
run;
%mend;
options symbolgen mprint;
%<
/p>
vacation
(dsn=hexpenses,varlis
t=ResortName)
%
vacation
(varlist=ResortName RoundOfGolf)
%vacation()
宏定义,对于主要参数,可以设置默认值
第
8
步:
使用
proc
sql
创建宏变量
%macro
vacation(dsn=expenses,varlist=_all_);
proc sql noprint;
select
mean(RoomRate),
put(today(),mmddyy10.)
into :average, :date
from
&dsn;
quit;
proc print
data=&dsn;
title
%upcase(&dsn) Data
Set
footnote
var &varlist;
where RoomRate<=&average;
run;
%mend;
options symbolgen mprint;
%<
/p>
vacation
(dsn=newexpenses)
%
vacation
(varlist=Re
sortName)
Sql
过程可以计算统计量和创建包含这
些统计量的宏变量
第
9
步:
<
/p>
在宏定义中使用
%if…%then%else
< br>语句执行条件语句
%macro
vacation(dsn=expenses,varlist=_all_);
proc sql noprint;
select
mean(RoomRate),
put(today(),mmddyy10.),
month(today())
into
:average,:date,:mon
from &dsn;
%if &mon=6 or &mon =7 or &mon =8 %then
%do;
proc print data=&dsn;
title
%upcase(&dsn) Data
Set
footnote
var &varlist;
where RoomRate<=&average;
run;
%end;
%else
%do;
proc print data=&dsn;
title
%upcase(&dsn) Data
Set
footnote
var &varlist;
run;
%end;
%mend;
options symbolgen mprint mlogic;
%vacation( )
宏定义可以执行条件语句或者部分代码
%macro
vacation(dsn=expenses,varlist=_all_);
proc sql noprint;
select
mean(RoomRate),
put(today(),mmddyy10.),
month(today())
into
:average,:date,:mon
from &dsn;
proc print data=&dsn;
footnote
var &varlist;
%if &mon=6 or &mon=7 or &mon=8 %then
%do;
title
%upcase(&dsn)
Data Set
where RoomRate<=&average;
%end;
%else %do;
title
%upcase(&dsn) Data
Set
%end;
run;
%mend;
利用
ODS
产生
excel
文件<
/p>
使用
ods html
ODS HMTL
FILE=”C:
”;
PROC PRINT DATA=;
RUN;
ODS HTML CLOSE;
使用
ods csv
ODS CSV
FILE=”C:
”;
PROC PRINT DATA=;
RUN;
ODS CSV CLOSE;
减少文件大小
respect是什么意思-易燃物品
respect是什么意思-易燃物品
respect是什么意思-易燃物品
respect是什么意思-易燃物品
respect是什么意思-易燃物品
respect是什么意思-易燃物品
respect是什么意思-易燃物品
respect是什么意思-易燃物品
-
上一篇:研究生中医英语术语翻译
下一篇:2017年浙江省专升本大学英语试题和答案