京公网安备 11010802034615号
经营许可证编号:京B2-20210330
SAS在DATA步中调用PROC步
给大家介绍一种方法,可以在DATA步中调用PROC过程,这样就可以在DATA步中对PROC产生的结果进行操作。
具体如何实现?
首先肯定不是直接在DATA步中写PROC,有些人可能会说用CALL EXECUTE,其实不然。CALL EXECUTE是在DATA步运行之后才调用。
在这里给大家介绍RUN_MACRO这个函数,通过该函数就可实现在DATA步中调用PROC,或者是另一个DATA步。
顾名思义,该函数就是用来调用macro的,但它有它的独特之处:不能在DATA步中使用该函数,只能在FCMP过程中使用(自定义函数中使用)。
因此要实现在DATA步中调用PROC,需要三个步骤:
1.定义一个MACRO,其内容就是一个PROC过程;
2.通过FMCP创建自定义函数,调用上面定义的MACRO;
3.在DATA步中调用自定义函数,即间接调用PROC过程;
下面用一个例子来说明:
创建宏(该宏是利用PROC SQL创建一个数据集,包含一个变量的非重复值)
%macro distinct_values;
%let input_table = %sysfunc(dequote(&input_table));
%let column = %sysfunc(dequote(&column));
%let output_table = %sysfunc(dequote(&output_table));
proc sql;
create table &output_table as
select distinct &column
from &input_table;
%mend;
创建自定义函数(在自定义函数中调用上面定义的宏)
proc fcmp outlib=work.funcs.sql;
function get_distinct_values(input_table $, column $, output_table $);
rc = run_macro('distinct_values', input_table, column, output_table);
return (rc);
endsub;
run;
在DATA步中调用
options cmplib = work.funcs;
data _null_;
rc = get_distinct_values('sashelp.shoes', 'region', 'work.regions');
id=open('work.regions');
if id then nobs=attrn(id,'NOBS');
put nobs;
run;
通过这种方式就可在DATA中调用PROC,从而使用PROC生成的结果。在上面的例子中,最后的DATA步调用PROC生成了数据集WORK.REGIONS,
然后通过OPEN函数打开该数据集,获取到该数据集的观测数。当然你可以干其他的事情。
重点在于:RUN_MACRO调用宏后,会一直等待宏执行完毕后才返回。因此紧接着get_distinct_values自定义函数后就可以使用宏产生的数据。
如果使用CALL EXECUTE调用宏,是在DATA步执行完之后,才调用宏,实际上就是在DATA步之后增加了宏的调用。
注:虽然在第三步调用get_distinct_values之后就可以使用该数据,但不能使用SET WORK.REGIONS; 为什么呢?这是因为SET语句的运行机制决定的。
在程序编译阶段,如果有SET语句,就会将SET的数据集打开,但此时程序还未执行,数据集根本没有生成,因此就会报错,提示数据集不存在。
所以要使用OPEN函数,来对该数据集进行操作。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
数字化经营时代,企业的市场竞争早已从经验决策转向数据决策。门店营收、用户转化、产品销量、成本损耗、存量资产等所有经营行为 ...
2026-05-22在MySQL数据库日常运维、业务数据校验、数据迁移与数据清洗场景中,自增主键ID的连续性校验是一项基础且关键的工作。MySQL的Auto ...
2026-05-22 很多企业团队并非缺乏指标,而是陷入“指标失控”:仪表盘上堆满实时跳动的数据,却无法回答“当前瓶颈在哪、下一步该做什么 ...
2026-05-22【核心关键词】大数据、可视化、存储、架构、客户、离线、产品、同步、实时、数据仓库、数据分析、数据可视化、存储数据、离线 ...
2026-05-21在电商流量红利消退、公域获客成本持续走高的当下,存量用户深度挖掘已成为店铺增收增效的核心抓手。相较于付费投放获取的陌生新 ...
2026-05-21 很多数据分析师每天盯着几十个指标,但当被问到“这套指标要支撑什么业务目标”“指标之间是什么逻辑关系”“业务变化时如何 ...
2026-05-21在数据驱动决策的时代,数据质量直接决定分析结果的可靠性与准确性,而异常值作为数据清洗中的核心痛点,往往会扭曲分析结论、误 ...
2026-05-20 很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“哪些指标在所有行业都适用”“哪些指标只对电商有意义”“二者如何搭 ...
2026-05-20Agent的能力边界,很大程度上取决于其掌握的Skill质量和数量。传统做法是靠人工编写和维护Skill,但这条路很快会遇到瓶颈。业务 ...
2026-05-20在统计分析中,方差分析(ANOVA)是一种常用的假设检验方法,核心用于分析“一个或多个自变量对单个因变量的影响”,广泛应用于 ...
2026-05-19 很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“什么是指标”“指标和维度有什么区别”“如何定义指标值的计算规则和 ...
2026-05-19想高效备考 CDA 一级,拒绝盲目刷题、冗余学习?《CDA 一级教材知识手册》重磅来袭!以官方教材为核心,浓缩 13 章 103 个核心考 ...
2026-05-19在数据统计分析中,卡方检验是一种常用的非参数检验方法,核心用于判断两个或多个分类变量之间是否存在显著关联,广泛应用于市场 ...
2026-05-18在企业数字化转型的浪潮中,很多企业陷入了“技术堆砌”的误区——上线了ERP、CRM、BI等各类系统,积累了海量数据,却依然面临“ ...
2026-05-18小陈是某电商平台的数据分析师。老板交给他一个任务:“我们平台的注册用户已经突破1000万了,想了解一下用户的平均月消费金额。 ...
2026-05-18【专访摘要】本次CDA持证专访邀请到拥有丰富物流供应链数据分析经验的赖尧,他结合自身在京东、华莱士、兰格赛等企业的从业经历 ...
2026-05-15在数字化时代,企业的每一次业务优化、每一项技术迭代,都需要回答一个核心问题:这个动作到底能带来多少价值?是提升了用户转化 ...
2026-05-15在数据仓库建设中,事实表与维度表是两大核心组件,二者相互关联、缺一不可,共同构成数据仓库的基础架构。事实表聚焦“发生了什 ...
2026-05-15 很多数据分析师沉迷于复杂的机器学习算法,却忽略了数据分析最基础也最核心的能力——描述性统计。事实上,80%的商业分析问 ...
2026-05-15【核心关键词】互联网、机会、运营、关键词、账户、数字化、后台、客户、成本、网络、数据分析、底层逻辑、市场推广、数据反馈 ...
2026-05-14