楼主: 楊中
3189 13

[问答] 如何大量输入数据不用一一改档案路径 [推广有奖]

11
楊中 发表于 2013-4-10 00:20:13
ariman911 发表于 2013-4-8 20:33
如果你的100家公司名稱為a1-a100
可以利用macor巨集
例如:
谢谢A大,不过小弟的文件名都不是连续的阿~

12
楊中 发表于 2013-4-10 00:23:12
yongyitian 发表于 2013-4-8 22:11
你的问题好像和下面这个有点相似,看看能不能把你的code写到里面。

那个macro中只作了 proc print, pro ...
Y大,把路径和文件名重复修改(删除,复制,贴上),
所谓的 删除,复制,贴上只是动作阿,
我要修改程序代码,不是要反复这些动作吗~

13
rdwalk 发表于 2013-4-13 02:18:24
楊中 发表于 2013-4-10 00:20
谢谢A大,不过小弟的文件名都不是连续的阿~
把原始数据备份一下,在新的文件夹里把全部文件选中,右击rename,这样文件名就有规律了。再用宏跑一下

14
yongyitian 发表于 2013-4-13 09:49:44
/* 看看是不是这样  */

data data;    /* you need to create your own data like this */
input dsn $ action $ dsnn $ in $ out $;     
datalines;                                             
class  c  class_1 sashelp work
class_1 c class_2 work work
class_2 c class_3 work work
class_3 c class_4 work work
class_3 d class_3 work work
;

%macro c(old=,  new=, from=, to=);  /* macro for copying a dataset */
data  &to..&new;
       set &from..&old;
run;
%mend c;

%macro d(dsn=, lib=);               /* macro for delete a dataset */
     proc datasets library=&lib nolist;
        delete &dsn;
     run;
%mend d;

%macro task(data=);              /* working macro */
data _null_;                                    
     set &data;
      if action = 'c' then do;
        call execute('%c(old='||dsn||', new='||dsnn||', from='||in||', to='||out||')'); end;
      if action = 'd' then call execute('%d(dsn='||dsn||', lib='||in||')');
run;
%mend task;

%task(data=data);        /* run this macro */

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 08:40