全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3050 6
2012-10-12
data check;
input rq yymmdd10. x1  x2  x3;
cards;
2010-01-01  1  4  3
2010-01-02  4  3  5
2010-01-02  7  3  6
2010-01-01  6  4  8
2010-01-03  7  5  5
2010-01-03  3  4  4
2010-01-04  6  2  5
2010-01-02  8  5  6
2010-01-06  9  6  6
2010-01-05  8  6  7
;
run;
用宏来提取某段日期的数据;比如我想提取2010-01-02到2010-01-04的数据
我只需要写一个宏%needday(2010-01-02,2010-01-04);
就能得到一个DATA  只有这个日期段的数据;
二维码

扫码加我 拉你入群

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

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

全部回复
2012-10-12 17:40:58
%macro needday(startdate=,enddate=);
     data pp;
     set check;
   if  &startdate<=rq and rq ge &enddate then output pp ;
   run;
%mend;
%needday(startdate=2010-01-01,enddate=2010-01-04);
二维码

扫码加我 拉你入群

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

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

2013-6-6 16:15:54
怎么这个程序运行出错呢?rq读入时间数据就有问题。
二维码

扫码加我 拉你入群

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

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

2013-6-6 16:48:01
我运行了一下程序,发现生成的数据集依然是原来的,没有按要求把时间段的数据提取出来。是不是不能应用rq lt 2010-01-02这样的语句,是因为数据类型不匹配吗?
二维码

扫码加我 拉你入群

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

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

2013-6-6 17:09:10
data check;
input rq yymmdd10. x1  x2  x3;
cards;
2010-01-01  1  4  3
2010-01-02  4  3  5
2010-01-02  7  3  6
2010-01-01  6  4  8
2010-01-03  7  5  5
2010-01-03  3  4  4
2010-01-04  6  2  5
2010-01-02  8  5  6
2010-01-06  9  6  6
2010-01-05  8  6  7
;
run;
%macro needday(startdate=,enddate=);
      data pp;
      set check;
    if  &startdate<= rq <= &enddate then output pp ;
    run;
%mend;
%needday(startdate=2010-01-01,enddate=2010-01-04);
重新编辑了一下,程序运行没有提示错误,但生成的数据集是空的,问题究竟出在什么地方。想把某个时间段的数据提取出来。
二维码

扫码加我 拉你入群

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

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

2013-6-6 19:59:01
xlpan 发表于 2013-6-6 17:09
data check;
input rq yymmdd10. x1  x2  x3;
cards;
日期变量太特殊了,需要按照以下方式进行调用

%needday(startdate='01Jan2010'd,enddate='04jan2010'd);
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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