设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1305|回复: 0

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

[复制链接]

11

主题

156

金钱

210

积分

入门用户

发表于 2019-7-12 15:46:38 | 显示全部楼层 |阅读模式
给大家分享一下SAS Macro获取文件路径的技巧!
获取路径有哪些用途呢:如果路径都用宏变量表示,当文件夹的物理路径发生变化时,都还是可以直接运行程序!不需要修改成程序

代码:
  1. %macro getpath;

  2. %global currentroot PGMLIB Path Project;

  3. %let currentroot= %sysfunc(getoption(sysin));

  4. %if "¤troot;" eq "" %then %do;

  5. %let currentroot= %sysget(sas_execfilepath);

  6. %let Path=%sysfunc(PRXCHANGE(s/(.*)\\.*/\1/,-1,¤troot;));

  7. %end;

  8. %let PGMLIB=&Path.;\macro\;

  9. %put NOTE:PGMLIB =&PGMLIB.;

  10. %put NOTE:Path   =&Path.;

  11. %inc "&PGMLIB.;\*.sas";

  12. %mend;

  13. %getpath;
复制代码


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


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

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



/*获取系统时间*/


data _null_;

call symput("date",left(compress(put("&sysdate;"d,yymmdd10.),"-"," ")));

run;

/*以时间命名的新建文件夹*/


data _null_;

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

run;


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

<如果我们需要在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;

如上:
讲语句都封装在宏变量里面,直接调用宏变量,就可以执行了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表