楼主: david_customs
1017 3

【求助】SAS初学菜鸟,请各位帮忙看如何实现按系统时间批量数据集合并 [推广有奖]

  • 0关注
  • 0粉丝

初中生

28%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
51 点
帖子
8
精华
0
在线时间
19 小时
注册时间
2010-3-2
最后登录
2014-3-6

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
      程序的思路是先取得系统时间,计算出统计月(上月)和环比月(上上月),然后均改成两位月份。然后使用循环set一至当月的月度数据集。程序如下,请各位帮忙指正。:
/*自动获得系统日期数据*/
data _null_;
format month month_last $2.
        year year_last $4.;
year=year(today());
year_last=year-1;
month=month(today())-1;
select(month);
  when(0) do;
   month=12;
   month_last=month-1;
   end;
  when(1) month_last=12;
  otherwise month_last=month-1;
end;
if month<10 then month='0' || left(month);
if month_last<10 then month_last='0' || left(month_last);
/*生成导出文件路径及文件名*/
file_source='C:\Documents and Settings\0113920\My Documents\工作\综合工作\数据手册\';
file_tail=year || month || '.xls';
run;
/*生成1-当月、去年1-当月的数据集*/
data r_work.st_a;
do j=1 to month*1;
  if j<10 then month_temp='0' || j;
   else month_temp=j;
  set 'R_fkdata.St'&year.&month_temp.&'i' (keep=Sta_id Traf_mode Trad_mode4 Tode_t Gross_wt Usd I_e_flag)
      'R_fkdata.St'&year.&month_temp.&'e' (keep=Sta_id Traf_mode Trad_mode4 Tode_t Gross_wt Usd I_e_flag);
end;
run;
二维码

扫码加我 拉你入群

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

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

关键词:请各位帮忙 如何实现 数据集 otherwise format otherwise null 如何 程序 统计

沙发
moyunzheng 发表于 2013-7-11 09:09:48 |只看作者 |坛友微信交流群
  1. libname r_work "d:\";
  2. libname R_fkdata "d:\";
  3. data
  4.         R_fkdata.St201301i R_fkdata.St201301e
  5.         R_fkdata.St201302i R_fkdata.St201302e
  6.         R_fkdata.St201303i R_fkdata.St201303e
  7.         R_fkdata.St201304i R_fkdata.St201304e
  8.         R_fkdata.St201305i R_fkdata.St201305e
  9.         R_fkdata.St201306i R_fkdata.St201306e;
  10. retain Sta_id Traf_mode Trad_mode4 Tode_t Gross_wt Usd I_e_flag .;
  11. output;
  12. run;

  13. data _null_;
  14. date=intnx("month",today(),-1);
  15. year=year(date);
  16. month=month(date);
  17. call execute("data r_work.st_a;set ");
  18. do i=1 to month;
  19.         call execute('R_fkdata.St'||strip(year)||put(i,z2.)||'i(keep=Sta_id Traf_mode Trad_mode4 Tode_t Gross_wt Usd I_e_flag) ');
  20.         call execute('R_fkdata.St'||strip(year)||put(i,z2.)||'e(keep=Sta_id Traf_mode Trad_mode4 Tode_t Gross_wt Usd I_e_flag) ');
  21.         end;
  22. call execute(";run;");
  23. run;
复制代码

使用道具

藤椅
david_customs 发表于 2013-7-11 15:04:52 |只看作者 |坛友微信交流群
谢谢楼上的帮忙解答,但是我希望在data 中的R_fkdata.Styyyymmi/e是根据系统时间由1月到n-1月自动生成的,而不是手动输入。再次感谢

使用道具

板凳
david_customs 发表于 2013-7-17 09:34:40 |只看作者 |坛友微信交流群
自己顶上去

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-6-15 05:31