【问题标题】:How to load a selected list of files using SAS macro如何使用 SAS 宏加载选定的文件列表
【发布时间】:2016-03-21 16:10:19
【问题描述】:

我有一个充满 csv 文件的文件夹(文件夹路径 Path)。我有一个 SAS 数据集 Name,其中包含选定文件名的列表。数据集Name 如下所示:

FileName
File1
File3
File8
File9
...

我想加载数据集name (name1-name...) 上列出的每个文件,并使用相同的名称将其保存为 sas 数据集。

谁能教我如何使用宏自动化这个过程。我无法弄清楚如何创建一个循环并一一执行以下过程。非常感谢。

data Name1   ;
     infile 'Path\Name1.csv' delimiter = ','  truncover DSD lrecl=32767 firstobs=2 ;
         informat VAR1 $25. ;
         informat VAR2 yymmdd10. ;
         informat VAR3 best12.  ;

         format VAR1 $25. ;
         format VAR2 yymmdd10. ;
         format VAR3 best12.  ;

         input
                  VAR1 $
                  var2
                  var3
      ;
run; 

【问题讨论】:

    标签: sas


    【解决方案1】:
    1. 为一个文件创建正确导入的代码(您已在上面提供)。
    2. 更改代码以采用宏变量而不是默认值。

      %let name=name1;
      
      data &name;
      infile "Path\&name..csv" delimiter = ','  truncover DSD lrecl=32767 firstobs=2 ;
      informat VAR1 $25. VAR2 yymmdd10. VAR3 best12.  ;
      format VAR1 $25.  VAR2 yymmdd10.  VAR3 best12.  ;
      
      input VAR1 $ var2 var3;
      run; 
      
    3. 创建一个带参数的宏

      %macro import_file(name);
      data &name;
      infile "Path\&name..csv" delimiter = ','  truncover DSD lrecl=32767 firstobs=2 ;
      informat VAR1 $25. VAR2 yymmdd10. VAR3 best12.  ;
      format VAR1 $25.  VAR2 yymmdd10.  VAR3 best12.  ;
      
      input VAR1 $ var2 var3;
      run;
      %mend; 
      
    4. 在数据集中使用 call execute 来执行宏。

      data _null_;
      set files;
      str=catt('%import_file(', file_name, ');');
      call execute(str);
      run;     
      

    【讨论】:

      猜你喜欢
      • 2011-06-20
      • 2018-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      • 2022-01-14
      • 2021-01-01
      相关资源
      最近更新 更多