全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4658 6
2012-07-15
悬赏 10 个论坛币 已解决
我有若干个文件夹,各个文件夹内的文件个数和名称,以及各个文件内的变量个数和名称完全相同。现在需要将所有文件的变量并列起来,这将涉及到把变量名称与其文件夹和文件名称关联起来。

下面是个简单的例子,包含两个文件夹,两个文件,两个变量。希望大侠能够帮我写一个宏,用于多个文件夹,多个文件,多个变量时。非常感谢。

DATA WORK.ALL;
MERGE
y98.m01(rename=(sale=sale_98_01 profit=profit_98_01))
y98.m02(rename=(ssale=sale_98_02 profit=profit_98_02))

y99.m01(rename=(sale=sale_99_01 profit=profit_99_01))
y99.m02(rename=(sale=sale_99_02 profit=profit_99_02))
;
RUN;

说简单一点,我要把各个文件中的变量并列起来,并且通过重新命名变量名称得以保留所有内容信息。本人感谢任何能将上面的问题使用SAS的宏哪怕只是进行一定程度的化简。



最佳答案

Imasasor 查看完整内容

忘了你文件夹中有多个文件,多个文件可以用上述代码
二维码

扫码加我 拉你入群

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

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

全部回复
2012-7-15 13:23:24
复制代码
忘了你文件夹中有多个文件,多个文件可以用上述代码
二维码

扫码加我 拉你入群

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

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

2012-7-15 14:14:52
你的文件夹名字有规律吗?你说的文件夹是sas的library吗?还是windows里的文件夹,你已经将全部文件导入sas生成数据集了吗?
二维码

扫码加我 拉你入群

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

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

2012-7-15 14:25:07
%let workpath=%sysfunc(pathname(work));

libname y01 "&workpath";
libname y02 "&workpath";
libname y03 "&workpath";


data y01.m01;
   x=1;y=2;        output;
   stop;
run;

data  y02.m02;
   x=3;y=4;
run;

data y03.m03 ;
   x=5; y=6;
run;

proc sql;
    create table vars as
         select distinct libname,memname,name
           from dictionary.columns
           where upcase(libname) eqt "Y" and upcase(memname) eqt "M"
           order by  libname,memname,name;
quit;
          

data tmp;
   set vars end=last;
   by libname memname;
   length merge_code $2000 rename_var $100;
   retain merge_code;
   rename_var=cats(name,"=",name,"_",libname,"_",memname);

   if first.memname then merge_code=strip(merge_code)||" "||strip(libname)||"."||strip(memname)||"(rename=("||strip(rename_var);
   else if not last.memname then merge_code=strip(merge_code)||" "||strip(rename_var);
   else if last.memname then merge_code=strip(merge_code)||" "||strip(rename_var)||")) ";

   if last then call symputx("merge_code",merge_code);

   keep libname memname name rename_var merge_code;
run;


%put &merge_code;

data wanted;
    merge &merge_code;
run;
二维码

扫码加我 拉你入群

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

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

2012-7-15 14:40:56
复制代码
欢迎加入我群,一起讨论
二维码

扫码加我 拉你入群

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

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

2012-7-15 14:48:45
复制代码
请使用这个代码,给我论坛币,我的比上面一位的好懂

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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