【问题标题】:sas macro to pull data from multiple filessas 宏从多个文件中提取数据
【发布时间】:2014-06-03 06:56:24
【问题描述】:

我正在尝试将 15 个不同 txt 文件中的数据导入 sas。我想将不同的文件名输入一个数组,然后使用宏中的数组元素将所有数据引入工作文件夹。以下不起作用;非常感谢任何帮助!

%macro DATAIMP;
array filenames(3) visit visit_event department
%do i =1 %to 3 %by 1
proc import
datafile="C:\Users\AR\Documents\data\&filename(i).txt"  
OUT= &filenames(i)_1
dbms=dlm replace;
delimiter=";";
getnames=yes;
run;
end;
%mend DATAIMP;

%DATAIMP;
run;

【问题讨论】:

    标签: sql macros sas


    【解决方案1】:

    array 是数据步骤中的一个声明,你不能这样使用它。 您可以做的是创建一个包含所有文件名的数据集并从中创建宏变量:

    data file;
    input filename $50.;
    datalines;
    visit 
    visit_event 
    department
    ;
    run;
    
    
    %macro DATAIMP;
    data _NULL_; /*local macro variables called FILENAME1, FILENAME2,...*/
        set file end=fine;
        call symput("FILENAME"||compress(_N_),filename);
        if fine then call symput("NF",compress(_N_));
    run;
    %DO I=1 %TO &NF;
        proc import
        datafile="C:\Users\AR\Documents\data\&&FILENAME&I...txt"  
        OUT= &&FILENAME&I.._1
        dbms=dlm replace;
        delimiter=";";
        getnames=yes;
        run;
    %END;
    %mend DATAIMP;
    
    %DATAIMP;
    

    请记住,&& 解析为 &,对于每个宏解析,您需要一个 . 来标记宏变量的结尾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 2015-08-19
      • 2018-10-06
      • 2018-10-06
      相关资源
      最近更新 更多