楼主: lovexialulu
1494 4

[问答] folder下有n个sas数据集,按照modify时间升序,取最后3个数据集的name作为3个宏参数 [推广有奖]

  • 0关注
  • 9粉丝

讲师

4%

还不是VIP/贵宾

-

威望
0
论坛币
514 个
通用积分
2.0180
学术水平
46 点
热心指数
51 点
信用等级
37 点
经验
55339 点
帖子
267
精华
0
在线时间
546 小时
注册时间
2016-11-5
最后登录
2023-11-13

楼主
lovexialulu 发表于 2018-4-13 14:27:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
folder下有n个sas数据集,按照modify时间升序,取最后3个数据集的name作为3个宏参数, sas 能做吗?

比如 C:\Users\Desktop\test  folder下面有4个数据集  dm.sas7bdat , ae.sas7bdat,  cm.sas7bdat , mh.sas7bdat ,最后modify的时间是October ‎23, ‎2014, ‏‎4:46:50 PM,  October ‎24, ‎2014, ‏‎4:46:50 PM,October ‎25, ‎2014, ‏‎4:46:50 AM,October 27, ‎2014, ‏‎4:46:50 PM.

想得到最后被modify的 三个宏变量 %let file1 =ae ;  &file2=cm; &file3=mh;
二维码

扫码加我 拉你入群

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

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

关键词:folder sas数据集 modify Older name

回帖推荐

苹果叶 发表于3楼  查看完整内容

沙发
Tigflanker 发表于 2018-4-13 19:18:02
看啊,
1. 先用libname句,例如:libname tmp 'D:.....';
2. 再去sashelp.vtable里找tmp库的数据集
3. 用call symputx函数把名称写到宏变量中(关键字:data _null_,_N_,cats等)

细节部分你自己完成啦
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
lovexialulu + 5 + 2 + 2 + 2 观点有启发

总评分: 论坛币 + 5  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

藤椅
苹果叶 在职认证  发表于 2018-4-13 21:40:44
  1. %macro getLastNdatasets(lib = sashelp, N = 3);
  2.   proc contents data = &lib.._all_ noprint out = allcontents;
  3.   run;

  4.   proc sort data = allcontents out = last&N.(keep = libname memname modate) nodupkey;
  5.     by libname memname descending modate;
  6.   run;
  7. /*
  8.   proc sql noprint;
  9.     select strip(catx('.', libname, memname)) into :last&N. separated by ', ' from last&N.(obs = &N.);
  10.   quit;
  11.   %put the last &N. dataset(s) should be &&last&N...;
  12. */

  13.   data _null_;
  14.     set last&N.(obs = &N.) end = eof;
  15.     call symputx(cats('file', _N_), memname);
  16.     if eof then call symputx('totFile', _N_);

  17. /*
  18.     call execute('data ' || strip(memname) || ';');
  19.     call execute('  set ' || strip(catx('.', libname, memname)) || ';');
  20.     call execute('run;');
  21. */
  22.   run;

  23.   %do i = 1 %to &totFile.;
  24.     %put file&i. = &&file&i..;
  25.   %end;
  26. %mend;

  27. %getLastNdatasets;
复制代码

已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
lovexialulu + 5 + 2 + 2 + 2 精彩帖子

总评分: 论坛币 + 5  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

板凳
左半球602 发表于 2018-4-14 07:12:39
mark一下,谢谢楼上的分享

报纸
lovexialulu 发表于 2018-4-15 04:18:04
感谢指导,非常受用!

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

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