关于本站
人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!
获取电子版《CDA一级教材》
完整电子版已上线CDA网校,累计已有10万+在读~ 教材严格按考试大纲编写,适合CDA考生备考,也适合业务及数据分析岗位的从业者提升自我。
TOP热门关键词
这个宏就简单了,输入一个或多个数据集,输出1或0,分别表示该数据集是否存在这个宏用于在其他宏中保持robust用的,如果不先确定下数据集是否存在,到时候SAS在log窗口报的错可不是那么好懂另外,如果有更好的解决我 ...
免费学术公开课,扫码加入![]() |
这个宏用于在其他宏中保持robust用的,如果不先确定下数据集是否存在,到时候SAS在log窗口报的错可不是那么好懂
另外,如果有更好的解决我写的宏的方法,欢迎指教
话说我很久之前吭哧吭哧写的一个标准化的宏,后来才发现有proc stdize
所以大家还要多多交流
- %macro ChkDataSet(DataSet,FlagDataSetExists);
- /**********************************************************************/
- /* 此宏用于检查指定的数据集是否存在。其中,DataSet是指定的数据集,若 */
- /* 需要指定具体的逻辑库,则采用逻辑库.数据库的格式,可设多个数据集, */
- /* 用空格分隔;FlagDataSetExists是标记宏变量名称,=1表示数据集存在, */
- /* 否则=No,若指定了多个数据集,则不同位置上的1或0代表相应的数据集是 */
- /* 否存在。另外需要注意,第一,当仅指定一个数据集时,若不指定逻辑库名 */
- /* 称,而只指定数据集名称,此时若在SAS环境中只包含一个指定的数据集, */
- /* 则标记宏变量FlagDataSetExists=1,若包含多个同名的数据集,则会报错;*/
- /* 第二,当指定多个数据集时,若不指定逻辑库名称,则默认为WORK逻辑库。 */
- /* */
- /* 最终得到的是宏变量&FlagDataSetExists,若指定数据集存在,则有 */
- /* &FlagDataSetExists=1,否则=0,若为多个数据集,则不同位置上的1或0代 */
- /* 表相应的数据集是否存在。 */
- /* */
- /* Created on 2012.11.16 */
- /* Modified on 2012.11.16 */
- /**********************************************************************/
- /* 检查DataSet的存在性 */
- %if &DataSet EQ %STR( ) %then %do;
- %put ERROR: The DataSet should not be blank, please check it again.;
- %goto exit;
- %end;
- /* 开始进行计算 */
- %global &FlagDataSetExists;
- /* 情形一:仅设定一个数据集,此时若省略逻辑库名,则在所有逻辑库中查找同名的数据集并予以报告 */
- %if %SYSFUNC(FIND(&DataSet,%STR( ))) EQ 0 %then %do;
- /* 检查DataSet的合法性 */
- %if %SYSFUNC(FIND(&DataSet,.)) NE 0 %then %do;
- %let CDS_LibName=%UPCASE(%SCAN(&DataSet,1,.));
- %let CDS_DataSet=%UPCASE(%SCAN(&DataSet,2,.));
- %end;
- %else %do;
- %let CDS_LibName=%STR();
- %let CDS_DataSet=%UPCASE(&DataSet);
- %end;
- %if &CDS_DataSet EQ %STR() %then %do;
- %put ERROR: The DataSet should not be blank, please check it again.;
- %goto exit;
- %end;
- %else %if &CDS_LibName NE %STR() %then %do;
- %let &FlagDataSetExists=%SYSFUNC(EXIST(&CDS_LibName..&CDS_DataSet.));
- %end;
- %else %do;
- proc sql noprint;
- create table CDS_temp as
- select * from sashelp.vtable
- where memname="&CDS_DataSet";
- quit;
- proc sql noprint;
- select count(*) into :CDS_DataSetNum from CDS_temp;
- quit;
- %if &CDS_DataSetNum EQ 0 %then %let &FlagDataSetExists=0;
- %else %if &CDS_DataSetNum EQ 1 %then %let &FlagDataSetExists=1;
- %else %do;
- %put ERROR: There could be more than one DataSets with the same name appointed in different libraries, please reassign a LibName first.;
- %goto exit;
- %end;
- %end;
- %end;
- /* 情形二:设定多个数据集,此时若省略逻辑库名,则默认为WORK逻辑库 */
- %else %do;
- %SeparateString(InputString=&DataSet,OutputString=CDS_DateSet);
- %do CDS_i=1 %to &CDS_DateSet_Num;
- /* 检查DataSet的合法性 */
- %if %SYSFUNC(FIND(&&CDS_DateSet_Var&CDS_i,.)) NE 0 %then %do;
- %let CDS_LibName_&CDS_i.=%UPCASE(%SCAN(&&CDS_DateSet_Var&CDS_i,1,.));
- %let CDS_DataSet_&CDS_i=%UPCASE(%SCAN(&&CDS_DateSet_Var&CDS_i,2,.));
- %end;
- %else %do;
- %let CDS_LibName_&CDS_i.=WORK;
- %let CDS_DataSet_&CDS_i.=%UPCASE(&&CDS_DateSet_Var&CDS_i);
- %end;
- %let CDS_FlagDataSetExists_&CDS_i.=%SYSFUNC(EXIST(&&CDS_LibName_&CDS_i...&&CDS_DataSet_&CDS_i.));
- %end;
- %let &FlagDataSetExists=&&CDS_FlagDataSetExists_1;
- %do CDS_j=2 %to &CDS_DateSet_Num;
- %let &FlagDataSetExists=&&&FlagDataSetExists.&&CDS_FlagDataSetExists_&CDS_j;
- %end;
- %end;
- /* 如果想要输出结果,请取消下面的注释 */
- /*%put &&&FlagDataSetExists;*/
- /* 删除不必要的表格 */
- proc datasets lib=work nolist;
- delete CDS_temp;
- quit;
- %exit:
- %mend;
- %macro Demo();
- %let DataSet=Gfl_fundcodelist_mgrname Gfl_managersoffund; /* 数据集名称,可设为多个,用空格分隔 */
- %let FlagDataSetExists=FlagDataSetExists1; /* 宏变量的名称,注意不能与参数名称相同*/
- %ChkDataSet(&DataSet,&FlagDataSetExists);
- %put &FlagDataSetExists1;
- %mend;
「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
您可能感兴趣的文章
- SAS软件培训 ... | SAS web book: Regression with ...
- SAS软件培训 ... | Using the Name Pipes to Commun ...
- SAS软件培训 ... | 已更新:SAS Essentials A Guide ...
- SAS软件培训 ... | 转:关于SAS的零碎印象
- SAS软件培训 ... | 请教SAS 9.13运行问题,着急...
- SAS软件培训 ... | [下载]SAS.Graphics(免费罗)
- SAS软件培训 ... | SAS 9.13 安装过程图解
- SAS软件培训 ... | SAS macro for exact two-sample ...
人气文章
本文标题:SAS基础宏之3:ChkDataSet
本文链接网址:https://bbs.pinggu.org/jg/ruanjianpeixun_sasruanjianpeixun_2340731_1.html
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。



