全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2449 10
2013-05-06
问题如下:
     现需要将一个文件夹下的多个文件输出到同一个sas数据集中(文件的格式均一致,只是文件名称是按照日期来的),且文件名作为一个变量,已写出的程序如下。由于文件很多,由20121219~20130418,如果在datalines后面罗列出来的,整个程序会显的非常夸张,请教各位大神,是否可以写循环或者宏?怎么写呢?
data data1;
      input filedir : $40.;
          infile dummy filevar=filedir end=done dsd dlm='09'X;
          file_location=filedir;
          do until(done);
       informat VAR1 best32. ;                                                           
       informat VAR2 $20. ;                                                              
       informat VAR3 $20. ;                                                              
       informat VAR4 $40. ;                                                              
       informat VAR5 best32. ;                                                           
       informat VAR6 best32. ;                                                           
       informat VAR7 best32. ;                                                           
       informat VAR8 best32. ;                                                           
       informat VAR9 best32. ;                                                           
       informat VAR10 best32. ;                                                         
       informat VAR11 best32. ;                                                         
       informat VAR12 best32. ;                                                         
       informat VAR13 best32. ;                                                         
       informat VAR14 best32. ;                                                         
       informat VAR15 best32. ;                                                         
       informat VAR16 best32. ;                                                         
       informat VAR17 best32. ;                                                         
       informat VAR18 best32. ;                                                         
       informat VAR19 best32. ;                                                         
       format VAR1 best12. ;                                                            
       format VAR2 $20. ;                                                               
       format VAR3 $20. ;                                                               
       format VAR4 $40. ;                                                               
       format VAR5 best12. ;                                                            
       format VAR6 best12. ;                                                            
       format VAR7 best12. ;                                                            
       format VAR8 best12. ;                                                            
       format VAR9 best12. ;                                                            
       format VAR10 best12. ;                                                            
       format VAR11 best12. ;                                                            
       format VAR12 best12. ;                                                            
       format VAR13 best12. ;                                                            
       format VAR14 best12. ;                                                            
       format VAR15 best12. ;                                                            
       format VAR16 best12. ;                                                            
       format VAR17 best12. ;                                                            
       format VAR18 best12. ;                                                            
       format VAR19 best12. ;                                                            
    input                                                                                
                VAR1                                                                     
                VAR2 $                                                                  
                VAR3 $                                                                  
                VAR4 $                                                                  
                VAR5                                                                     
                VAR6                                                                     
                VAR7                                                                     
                VAR8                                                                     
                VAR9                                                                     
                VAR10                                                                    
                VAR11                                                                    
                VAR12                                                                    
                VAR13                                                                    
                VAR14                                                                    
                VAR15                                                                    
                VAR16                                                                    
                VAR17                                                                    
                VAR18                                                                    
                VAR19                                                                    
    ;
    output;
          end;
          datalines;
E:\data1\20121219_data1
E:\data1\20121220_data1
;
run;
二维码

扫码加我 拉你入群

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

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

全部回复
2013-5-6 14:13:10
how about some wildcard characters in your INFILE statement?
infile ("E:\data1\2012*_data1", "E:\data1\2013*_data1") dsd dlm='09'x;
二维码

扫码加我 拉你入群

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

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

2013-5-6 14:18:31
邓贵大 发表于 2013-5-6 14:13
how about some wildcard characters in your INFILE statement?
infile ("E:\data1\2012*_data1", "E:\da ...
按照你的试了下,程序报错~~
二维码

扫码加我 拉你入群

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

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

2013-5-6 14:24:27
data data1;
          infile E:\data1\* dsd dlm='09'X;
          informat VAR1 best32. ;                                                           
       informat VAR2 $20. ;                                                              
       ...                                                        
       format VAR1 best12. ;                                                            
       ...                                                         
    input                                                                                
                VAR1                                                                     
       ...                                                         
    ;
run;
/*前提是文件没有变量名,所有文本文件都在E:\data1文件夹中*/
二维码

扫码加我 拉你入群

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

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

2013-5-6 14:34:00
ziyenano 发表于 2013-5-6 14:24
data data1;
          infile E:\data1\* dsd dlm='09'X;
          informat VAR1 best32. ;           ...
这种情况我知道,关键是现在必须要取文件名做为一个变量,因为要取那个日期~~
二维码

扫码加我 拉你入群

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

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

2013-5-6 14:42:07
xulimei1986 发表于 2013-5-6 14:34
这种情况我知道,关键是现在必须要取文件名做为一个变量,因为要取那个日期~~
那把datalines以下的文件名,放入一个临时的txt中,用infile去读取
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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