全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1601 0
2014-10-15
学习过程中遇到的一点小小问题,大神们能否指点一下?


LIBNAME RESDAT "I:\SAS_DATA_SET\RESDAT"; *定义SAS永久数据库;

X
    "DIR
          I:\SAS_DATA_SET\RESDAT\*.SAV
     /B >
          I:\SAS_DATA_SET\ALL.TXT"; *将I:\SAS_DATA_SET\RESDAT文件夹下以.SAV为后缀的数据集的名称写入到I:\SAS_DATA_SET\ALL.TXT中的ALL数据集中;

*定义读取.SAV格式数据及的MACRO;
%MACRO DAORU(NAME);

   PROC IMPORT DATAFILE = "I:\SAS_DATA_SET\RESDAT\&NAME"
               OUT = S&NAME.
              DBMS = SAV
              REPLACE;
   RUN;
   QUIT;
%MEND DAORU;

DATA _NULL_;
  INFILE "I:\SAS_DATA_SET\ALL.TXT";*读取已经读入到I:\SAS_DATA_SET\ALL.TXT中ALL数据集中的全部数据集的名称;
  INPUT FNAME: $100.;*将ALL中的数据全部读入到FNAME变量中;
  CALL EXECUTE(
                COMPRESS(
                          '%DAORU('
                                    ||
                                       SCAN(FNAME,1,'.')
                                                         ||
                                 ');'
                         )
              );                                               *利用SCAN():对FNAME变量进行扫描,以"."为分割符;
                                                               *利用EXECUTE():函数逐个调用%DAORU宏,利用COMPRESS()去掉'%DAORU(' || SCAN(FNAME,1,'.')||')'中的空格;
                                                               *%DAORU():MACRO中的参数通过SCAN()扫描获取;
RUN;
QUIT;

疑问:
在%DAORU中,通过SCAN(FNAME,1,'.')得到的数据集名称并没有.SAV后:
           1 为何DATAFIKLE = "I:\SAS_DATA_SET\RESDAT\&NAME"可以正常读取数据?
           2 为何DATAFIKLE = "I:\SAS_DATA_SET\RESDAT\&NAME..SAV"则一直报错?

参考帖子:
1. http://blog.sina.com.cn/s/blog_534569bc0100duq3.html
2. https://bbs.pinggu.org/thread-1036775-1-1.html

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群