
当程序较长的时侯,就象上面 的程序一样,总是使用%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
透视表内计算两个字段乘积的实用指南 在数据处理与分析的过程中,透视表凭借其强大的数据汇总和整理能力,成为了众多数据工 ...
2025-06-20CDA 一级考试备考时长全解析,助你高效备考 CDA(Certified Data Analyst)一级认证考试,作为数据分析师领域的重要资格认证, ...
2025-06-20统计学模型:解锁数据背后的规律与奥秘 在数据驱动决策的时代,统计学模型作为挖掘数据价值的核心工具,发挥着至关重要的作 ...
2025-06-20Logic 模型特征与选择应用:构建项目规划与评估的逻辑框架 在项目管理、政策制定以及社会服务等领域,Logic 模型(逻辑模型 ...
2025-06-19SPSS 中的 Mann-Kendall 检验:数据趋势与突变分析的利器 在数据分析的众多方法中,Mann-Kendall(MK)检验凭借其对数据分 ...
2025-06-19CDA 数据分析能力与 AI 的一体化发展关系:重塑数据驱动未来 在数字化浪潮奔涌的当下,数据已然成为企业乃至整个社会发展进 ...
2025-06-19CDA 干货分享:统计学的应用 在数据驱动业务发展的时代浪潮中,统计学作为数据分析的核心基石,发挥着无可替代的关键作用。 ...
2025-06-18CDA 精益业务数据分析:解锁企业增长新密码 在数字化浪潮席卷全球的当下,数据已然成为企业最具价值的资产之一。如何精准地 ...
2025-06-18CDA 培训:开启数据分析师职业大门的钥匙 在大数据时代,数据分析师已成为各行业竞相争夺的关键人才。CDA(Certified Data ...
2025-06-18CDA 人才招聘市场分析:机遇与挑战并存 在数字化浪潮席卷各行业的当下,数据分析能力成为企业发展的核心竞争力之一,持有 C ...
2025-06-17CDA金融大数据案例分析:驱动行业变革的实践与启示 在金融行业加速数字化转型的当下,大数据技术已成为金融机构提升 ...
2025-06-17CDA干货:SPSS交叉列联表分析规范与应用指南 一、交叉列联表的基本概念 交叉列联表(Cross-tabulation)是一种用于展示两个或多 ...
2025-06-17TMT行业内审内控咨询顾问 1-2万 上班地址:朝阳门北大街8号富华大厦A座9层 岗位描述 1、为客户提供高质量的 ...
2025-06-16一文读懂 CDA 数据分析师证书考试全攻略 在数据行业蓬勃发展的今天,CDA 数据分析师证书成为众多从业者和求职者提升竞争力的重要 ...
2025-06-16数据分析师:数字时代的商业解码者 在数字经济蓬勃发展的今天,数据已成为企业乃至整个社会最宝贵的资产之一。无论是 ...
2025-06-16解锁数据分析师证书:开启数字化职业新篇 在数字化浪潮汹涌的当下,数据已成为驱动企业前行的关键要素。从市场趋势研判、用 ...
2025-06-16CDA 数据分析师证书含金量几何?一文为你讲清楚 在当今数字化时代,数据成为了企业决策和发展的重要依据。数据分析师这一职业 ...
2025-06-13CDA 数据分析师:数字化时代的关键人才 在当今数字化浪潮席卷全球的时代,数据已然成为驱动企业发展、推动行业变革的核心要素。 ...
2025-06-13CDA 数据分析师报考条件全解析 在大数据和人工智能时代,数据分析师成为了众多行业追捧的热门职业。CDA(Certified Data Analyst ...
2025-06-13“纲举目张,执本末从。”若想在数据分析领域有所收获,一套合适的学习教材至关重要。一套优质且契合需求的学习教材无疑是那关键 ...
2025-06-09