全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学
2979 3
2010-08-04
有50000个文本文件,想要导入到sas成数据集,参考之前论坛中某位大侠提供的方法,写了一个分别一个个导入的程序。
可是导入的过程中出现两个问题:
1)如果 infile "l:\sas\c2.txt" 中文件路径是带文件后缀名.txt的话,log中会提示找不到这个物理文件infile "l:\sas\c2txt" ,它好像直接把文件名和后缀名中间的点忽略掉了,试过多种方法输入这个点或改为别的后缀,都还是没有办法解决这个问题。
于是,把后缀名直接删掉了,倒是可以读了。可是又遇到第二个问题
2)用input 输入了变量名和长度,因为之前试过用间隔符,可是一直都没有把每列读正确,后来只好不厌其烦的给34个变量分别定长度,前面的变量都读得比较顺利,可是log中提示最后两个变量,怎么都没有办法把正确数据读进去,不知道为什么。

另外,文件原来的格式是c.dly,我不知道dly是什么格式,但是直接把后缀改成txt,就可以用记事本或写字板打开,如果哪位大侠知道这个dly文件,请赐教一下。

我把运行出错的log,我写的语句,以及程序中用来测试的3个数据文件传上来。
希望哪位大侠可以帮忙看看,告诉我到底是怎么回事,如果是我写的语句的问题,那应该改成怎样的?或者有没有更好的办法?

另外的另外,我最后的目的是要把这5万个文件中的数据做成一个数据集的,不知道有没有办法可以把这5万个文件一次导入为一个数据集,而不需要逐个导入以后,再合并。

由于我的sas处于很菜鸟阶段,希望可以帮忙写出具体的语句,或者指明要改哪里。
非常感谢!
附件列表

新建文件夹.rar

大小:20.77 KB

 马上下载

data.rar

大小:1.08 KB

 马上下载

本附件包括:

  • data.txt

二维码

扫码加我 拉你入群

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

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

全部回复
2010-8-4 08:58:11
还是把语句贴出来,让各位比较容易看吧。求助啊!

%macro readraw(first=1,last=3);                                                                                                        
   %local num;                                                                                                                          
   %do num=&first %to &last;                                                                                                            
      data c#                                                                                                                       
        infile "l:\sas\c&num";                                                                                                         
        input ID      $      1-11      YEAR            12-15      MONTH            16-17      ELEMENT      $      18-21                 
VALUE1            22-26      MFLAG1      $      27-27      QFLAG1      $      28-28      SFLAG1      $      29-29                       
VALUE2            30-34      MFLAG2      $      35-35      QFLAG2      $      36-36      SFLAG2      $      37-37                       
……
VALUE30            254-258      MFLAG30      $      259-259      QFLAG30      $      260-260      SFLAG30      $      261-261           
VALUE31            262-266      MFLAG31      $      267-267      QFLAG31      $      268-268      SFLAG31      $      269-269;         
      run;                                                                                                                              
   %end;                                                                                                                                
%mend readraw;                                                                                                                          
%readraw(first=1,last=3);                                                                                                               
run;
二维码

扫码加我 拉你入群

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

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

2010-8-4 11:03:27
又发现,似乎是数据格式的问题,可是怎么数都觉得自己输的列数没错,上传这个data.txt的文件,这个数据里面明明有几十行,可是用我写的infile语句只能读到5行。

完全不明白为什么……

求高人帮忙啊!
二维码

扫码加我 拉你入群

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

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

2010-8-4 22:52:03
没有哪位对这个问题有兴趣么...
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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