楼主: happycc
18948 22

[原创博文] 如何用SAS读一个文件夹下所有的EXCEL文件 [推广有奖]

  • 0关注
  • 1粉丝

初中生

90%

还不是VIP/贵宾

-

威望
0
论坛币
105 个
通用积分
0
学术水平
1 点
热心指数
0 点
信用等级
0 点
经验
649 点
帖子
15
精华
0
在线时间
22 小时
注册时间
2009-12-9
最后登录
2014-5-8

楼主
happycc 发表于 2011-6-3 10:32:01 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
一个文件夹下面所有的EXCEL文件都是一个格式的,但是名称各异,想一次性的把所有这些文件都读成SAS格式的,怎么实现呢?
现在读EXCEL都是用Import 或者 infile,但是这两种都需要知道文件名,不知道文件名的情况下如何把文件夹下面所有的文件都读进去呢?

谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:EXCEL xcel exce cel 如何用 文件夹 EXCEL 如何

本帖被以下文库推荐

沙发
马甲2号 发表于 2011-6-3 10:37:02
思路:在操作系统中 dir *.xls -> 1.txt, 再用sas分析1.txt,提取文件名,再用macro批量处理。
How you doin?

藤椅
happycc 发表于 2011-6-3 12:28:43
2# 马甲2号

非常感谢,已经用
options noxwait xsync;
filename dirpipe pipe "dir D:\";
语句实现全程SAS操作:P
已有 1 人评分学术水平 收起 理由
马甲2号 + 1 不错,又涨知识了。

总评分: 学术水平 + 1   查看全部评分

板凳
stata18 发表于 2011-6-3 14:12:00
还可以这样用吗?呵呵,果然有高手呀,学习了1

报纸
crackman 发表于 2011-6-4 08:47:15

地板
stata18 发表于 2011-6-4 18:42:05
看看如何?

7
可道可名 发表于 2011-6-17 16:11:40
太厉害了,真的需要好好学

8
asteriod 发表于 2011-6-17 17:19:27
不改名,也可以啊!

9
coolsky2004 发表于 2011-6-29 23:22:29
给一段万能的代码给你。网上找的。不是我的。呵呵。不过挺好用的。
%MACRO GET_PC_FILES_IN_FOLDER(DIRNAME,TYP)     ;/*参数有两个:路径,文件类型后缀*/
   %PUT %STR(----------->DIRNAME=&DIRNAME)        ;
   %PUT %STR(----------->TYP=&TYP)                ;
   DATA WORK.DIRFILES                             ;     
   RC=FILENAME("DIR","&DIRNAME")             ;/*把&DIRNAME值传给文件引用符“DIR"*/   
   OPENFILE=DOPEN("DIR")                     ;/*得到路径标示符OPENFILE,DOPEN是打开directory的sas内置函数*/
   IF OPENFILE>0 THEN DO                     ;/*如果OPENFILE>0表示正确打开路径*/        
     NUMMEM=DNUM(OPENFILE)                  ;/*得到路径标示符OPENFILE中member的个数nummem*/        
     DO II=1 TO NUMMEM                      ;           
        NAME=DREAD(OPENFILE,II)             ;/*用DREAD依次读取每个文件的名字到NAME*/           
        OUTPUT                              ;/*依次输出*/        
     END                                    ;     
   END                                       ;     
   KEEP NAME                                 ;/*只保留NAME列*/
RUN                                            ;
PROC SORT                                      ;/*按照NAME排序*/     
    BY DESCENDING NAME                        ;
    %IF &TYP^=ALL %THEN %DO                        ;/*是否过滤特定的文件类型&TYP*/     
      WHERE  INDEX(UPCASE(NAME),UPCASE(".&TYP"));/*Y,则通过检索NAME是否包含&TYP的方式过滤文件类型*/
    %END                                           ;
RUN                                            ;
%MEND   GET_PC_FILES_IN_FOLDE;


%GET_PC_FILES_IN_FOLDER(E:\,csv);
然后再用宏读入数据。

10
邢不行 在职认证  发表于 2011-7-1 15:09:42
不管去哪里 只要在路上

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-24 17:33