全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1899 1
2013-04-07
我有很多很多的分开保存的数据文件,但是我只需要读取其中的一部分
这些我所需要的文件名被保存在一个单独的数据文件中
怎么编程实现根据这个好像“目录”一样的文件,读取我所需要的数据呢?

我的思路是用宏:
我是想一个一个处理这些文件
所以用宏的话应该是用一个循环,每次循环从目录文件中读取一个样本,然后再根据这个数据读取对应的文件名的数据。
但在读取目录文件的时候有两个地方卡住没有想法了
1.怎么读取指定序数的样本?
2.怎么将它保存到宏变量里去?

求各位高手指教~~~
二维码

扫码加我 拉你入群

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

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

全部回复
2013-4-8 09:43:02

举个例子
下面是两个macro,第一个macro创建10个模拟数据集,和一个目录数据集。

第二个macro打印每一个数据集,并把所有的数据集 append 成一个数据集.

其中有怎么从目录文件中读取一个样本文件名. 可能对你有帮助.

%macro createSample;     /* create simulated 10 datasets */
       data myfiles;    /* create a dataset that hold the dataset names */
          do i=101 to 110;
            name='Data'||put(i,3.);
           output;
          end;
          drop i;
       run;

         proc sql;
           select name into :F_name separated by ' '
           from myfiles;
         quit;

    %let   N_file = %sysfunc(countw(&F_name));

    %do i=1 %to &N_file;
        %let data=%qscan(&F_name, &i, %str( ));
         data &data;
           do j=1 to 10;
             var=ranuni(&i);
             output;
           end;
         run;
    %end;

%mend createSample;
%createSample;

/* do some demo work such as print each dataset and append all the dataset together */
%macro Print_Append_data;   
    proc sql;
      select name into :F_name separated by ' '
      from myfiles;
    quit;

    %let N_file=%sysfunc(countw(&F_name));

        %do i=1 %to &N_file;
           %let data=%qscan(&F_name, &i, %str( ));
             proc print data=&data;
                run;
             proc append base=all data=&data;
                run;
             %let all=&data;
        %end;
%mend print_append_data;
%Print_Append_data;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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