前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAS Macro小技巧—获取文件路径

SAS Macro小技巧—获取文件路径

作者头像
Setup
发布2019-10-21 16:51:07
4.3K0
发布2019-10-21 16:51:07
举报

今天给大家Share一下SAS Macro获取文件路径的技巧!

获取路径有哪些用途呢:

如果路径都用宏变量表示,当文件夹的物理路径发生变化时,

都还是可以直接运行程序!不需要修改成程序~

上代码!

代码语言:javascript
复制
%macro getpath;
%global currentroot PGMLIB Path Project;
%let currentroot= %sysfunc(getoption(sysin));
%if "&currentroot" eq "" %then %do;
%let currentroot= %sysget(sas_execfilepath);
%let Path=%sysfunc(PRXCHANGE(s/(.*)\\.*/\1/,-1,&currentroot));
%end;
%let PGMLIB=&Path.\macro\;
%put NOTE:PGMLIB =&PGMLIB.;
%put NOTE:Path   =&Path.;
%inc "&PGMLIB.\*.sas";
%mend;
%getpath;

如上:定义的&Path。 为SAS程序所在路径。(如上代码可以直接复用)

SAS 创建文件夹:<前面是文件名,后面是路径>如下代码:

这样做的的好处是啥呢,每次运行数据或者数据集想实现自动存下来,这个时候就可以用SAS自动创建文件夹的方式来存储。

代码语言:javascript
复制
/*获取系统时间*/
 data _null_;
 call symput("date",left(compress(put("&sysdate"d,yymmdd10.),"-"," ")));
 run;
/*以时间命名的新建文件夹*/

data _null_;
    NewDir=dcreate("&date.","D:\");
run;

proc Sql 定义Macro变量的实现语法批操作。

代码语言:javascript
复制
<如果我们需要在data step中对某一类变量实现类似的操作>
<如:很多变量都有类似的 if 语句的判断>
first:
proc  contnets 获取变量列表 并筛选出你需要变量。
利用data Step  对name 进行一些连接
data _varstemp12;
 set _varstemp10;
 NAME1=strip(left("input("))||strip(left(NAME))||strip(",??yymmdd10.)");
 Cond="if length("||strip(left(NAME))||")=7 then "|| strip(NAME)||left("=compress("||strip(NAME)||left("||'-15')"));
run;
对所有不完整日期的变量进行补充“-15”操作
  proc sql noprint;
    select NAME1 into:varlist1 separated by ";" from DATALIB._varstemp12   ;
  quit;
data RAWDATA2;
 set RAWDATA1;
 &varlist1.;
run;

如上:

讲语句都封装在宏变量里面,直接调用宏变量,就可以执行了。。。例子只举一个喔,好多类似的操作,可以大大的优化程序,和提高编程效率

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAS程序分享号号号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档