京公网安备 11010802034615号
经营许可证编号:京B2-20210330
当程序较长的时侯,就象上面 的程序一样,总是使用%LET 语句就显得不那么方便了,这时可以使用宏参数, 即定义宏 变量作 为%MACRO 语句的一部分。 %MACRO plot(yvar,xvar); PROC PLOT; PLOT &yvar*&xvar; RUN; %MEND plot; %MACRO 语句的括号中定义的宏变量就是宏参数,当调用宏的时侯,需将值传递给宏参 数, 如: %plot(income,age) 宏处理器把第 1 个值和第 1 个宏变量匹配,第 2 个值和第 2 个宏变量匹配……因此,这些 参数 叫做位置参数,于是产生下面语句: PROC PLOT; PLOT INCOME*AGE; RUN; 假设你经常创建数据集 TEMP 和绘制 PLOT 图,你可以将数据步做成一个宏,而过程步做 成另 一个宏,然后在第 3 个宏里调用它们。注意最好加上注释说明你要做什么。 %MACRO create; %MACRO analyze(yvar,xvar);
Data temp; %*Create the Data Set; SET olddata; IF age>=20; %create %MEND create; %*Plot the Variable Selected; %MACRO plot; %plot PROC plot; %MEND analyze; PLOT &yvar*&xvar; RUN; %MEND plot; (程序的第1部分) (程序的第2部分) 在宏 ANALYZE 中,由“%*”开始的语句是宏注释语句, 它们用于对宏内做的事情作注解。 当宏较长的时侯,是很必要的。当你定义完这些宏后,就可以通过调用宏来运行程序。 %analyze(income,age) 如果你想改变 CREATE,重新定义它,则: %MACRO create; DATA temp2; SET olddata(obs=100); IF age>=20; %MEND create; 然后调用 ANALYZE,方法是: %analyze(income,age) 当然,你也可以把整个程序段都放入 ANALYZE,而不去调用其他宏,但是,定义 CREATE 和 PLOT 的优点是你可以在调用 ANALYZE 之前分别重新定义和调试它们,在规模较大的宏中, 模 块结构 是很重要的。 当你使用宏 ANALYZE 时,假设有时你需要执行宏 CREATE 中的 DATA 步,而有时又可直 接从 PROC PLOT 开始,重新定义 ANALYZE,使用%IF-%THEN 语句。 %MACRO analyze(getdata,yvar,xvar); %IF &getdata=yes %THEN %create; %ELSE %plot; %MEND analyze; 如下调用 ANALYZE,方法为: %analyze(yes,income,age) %analyze(no,income,yrs_educ)产生:
DATA TEMP; SET OLDDATA; IF AGE>=20; PROC PLOT; PLOT INCOM
E*AGE; RUN; PROC PLOT; PLOT INCOME*YRS_EDUC; RUN; 如果在%THEN 从句中有多个语句, 使用%DO-%END 组,如: %MACRO analyze(getdata,yvar,xvar); TITLE; %IF &getdata=yes %THEN %DO; %create TITLE3 "Data Set Created for This Plot"; %END; %plot %MEND analyze; 如果我们调用 ANALYZE, 方法如下: %analyze(YES,income,age) 。 那么产生的语句是: “PROC PLOT; PLOT INCOME*AGE; RUN; ”。 宏处理器并没有调用宏 CREATE 去创建一个数据集, 因为宏处理器在把宏展开时并不 把小 写字母转换为大写。于是%IF 语句作的比较是 YES=yes,当然为假,事与愿违。为了在调
用时不 管大小写都正确,应该修改 ANALYZE 如下: %MACRO analyze(getdata,yvar,xvar); %IF %UPCASE(&getdata)=YES %THEN %create; %ELSE %plot; %MEND analyze; 其中宏函数%UPCASE 把小写转换为大写。 假设你想创建一系列名字用于 SAS 语句, 如 DATA 或 VAR 语句,可以借助宏来实现。 %MACRO names(name,number) %DO n=1 %TO &number; &name&n %END; %MEND names; 宏 NAMES 把参数 NAME 的值和宏变量的值连接起来形成一系列名字,参数 NUMBER 的 值是宏变 量 N 的终止值。于是在 DATA 步中调用 NAMES,方法如下: DATA %names(dsn,5); 产生语句: DATA DSN1 DSN2 DSN3 DSN4 DSN5; 3. 数据步中的宏变量 假设你想把一个数据集的观测数放进一个 FOOTNOTE 语句中,首先定义一个宏,如: %MACRO create; DATA temp; SET olddata END=final; IF age>=20 THEN DO; n+1; OUTPUT; END; IF final THEN CALL SYMPUT('number',n); RUN; %MEND create; 以后一旦调用 CREATE,则 CALL SYMPUT 语句将计数变量 N 的值传递给宏变量 NUMBER,NUMBER 可以是以前创建的宏变量,也可以是在当前的 DATA 步创建的。 这个宏变量以后可以直接引用, 也可以在 DATA 步用 SYMGET 函数引用。 从而实匣同的 数 据步中的值传递,如: x=SYMGET('number'); 数据步变量 X 的值就是数据集 TEMP 中的观测个数。 也可以在 DATA 步用 SYMGET 函数引用。从而实匣同的数 据步中的值传递,如: x=SYMGET('number'); 数据步变量 X 的值就是数据集 TEMP 中的观测个数。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
【核心关键词】贷款、报表、课程、专业、建模、缺失值、营销、互联网、银行、办公自动化、数据分析、数据预处理、特征工程、贷 ...
2026-06-05在数据库数据查询、业务报表统计、多表关联分析中,LEFT JOIN左连接是使用率最高的SQL关联查询语句。其核心特性是保留左表全部数 ...
2026-06-05 很多数据分析师能熟练地写SQL、做透视表、算描述性统计,但当被问到“如何预测用户流失概率”“如何归因销量下滑的关键因素 ...
2026-06-05任何一款产品从诞生、普及到最终退出市场,都会遵循一套固定的发展规律,这就是产品生命周期理论。在市场竞争日益激烈、产品迭代 ...
2026-06-04在Excel数据分析、办公统计、业务报表制作场景中,数据透视表是数据汇总、分类统计、快速复盘的核心工具,能够高效完成海量原始 ...
2026-06-04 很多数据分析师拿到数据就开始清洗、建模,但当被问到“这批数据属于什么类型——结构化还是非结构化?分类变量还是数值变量 ...
2026-06-04在问卷调查与社会科学数据分析中,卡方检验是最常用、最基础的非参数检验方法,广泛应用于市场调研、用户分析、行为统计、满意度 ...
2026-06-03【核心关键词】贷款、报表、课程、专业、建模、缺失值、营销、互联网、银行、办公自动化、数据分析、数据预处理、特征工程、贷 ...
2026-06-03 很多数据分析师画过趋势图、做过业绩预测,但当被问到“这个月销售额增长20%,到底是长期趋势自然增长,还是促销活动的短期 ...
2026-06-03逻辑回归是数据分析、机器学习、统计建模中应用最广泛的二分类预测模型,常用于风险判断、行为预测、归因分析等场景。在SPSS、Py ...
2026-06-02数字经济时代,市场竞争日趋同质化,用户消费需求愈发个性化、多元化,传统依托经验、粗放式、广撒网的营销模式弊端日益凸显。长 ...
2026-06-02 很多数据分析师做过按月份的销售额趋势图,画过按天的流量折线图,但当被问到“时间序列和普通数据有什么本质区别”“季节性 ...
2026-06-02在市场竞争日趋饱和、用户需求不断细分的当下,企业创业创新、产品迭代与市场拓展不再依赖经验决策,而是需要系统化、工具化的商 ...
2026-06-01【核心关键词】调度、岗位、数据库、企业、报表、培训、程序、数据分析、数据加工、业务部门、企业数据、调度工具、业务指标、 ...
2026-06-01 很多数据分析师能熟练地计算指标、搭建标签体系,但当被问到“画像到底在解决什么问题”“画像和标签是什么关系”“画像如何 ...
2026-06-01在数据统计分析、数据清洗、异常值识别与数据分布研究中,箱型图是最直观、高效、专业的可视化分析工具。相较于柱状图、折线图仅 ...
2026-05-29Tkinter是Python内置的标准GUI图形界面库,具备无需额外安装、调用简单、兼容性强、轻量化高效等优势,是Python快速开发桌面小程 ...
2026-05-29 很多分析师在设计标签时思路清晰,但真到落地环节却面临“数据在手,不知如何转化为可用标签”的困境:或因加工方式选择不当 ...
2026-05-29【核心关键词】大数据、经理、专业、金融、客户、传统、建模、数据产品、互联网金融、产品经理、数据分析、金融行业、数据模型 ...
2026-05-28 很多分析师每天和数据打交道,但当被问到“标签是什么”“标签和指标有什么区别”“标签体系如何设计”时,却常常答不上来。 ...
2026-05-28