楼主: yyda
3893 11

请教:提取数据 [推广有奖]

  • 0关注
  • 1粉丝

已卖:853份资源

高中生

55%

还不是VIP/贵宾

-

威望
0
论坛币
2506 个
通用积分
1.7800
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
233 点
帖子
28
精华
0
在线时间
15 小时
注册时间
2010-6-24
最后登录
2015-5-3

楼主
yyda 发表于 2010-7-23 14:34:12 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教高手,如何实现提取周数据和日数据的结合:即够一周的取周五的数据,不够一周的要取每一天的日数据。该怎样实现?

例如:
201006281
201006291
201006301想要的结果:
201007011201007021
201007021201007092
201007052201007123
201007062201007133
201007072201007143
201007082
201007092
201007123
201007133
201007143



   其中20100629——20100702为一周五天的数据,我只取20100702即周五的数据,同理,下周只取20100709的数据,但是第三周不足五天,所以我每一天都取,我用last.week都取到了最后一天的数据。无法实现我想要的结果,希望高手指点!
二维码

扫码加我 拉你入群

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

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

关键词:Last 请教高手 如何实现 高手指点 Week 请教

回帖推荐

hopewell 发表于2楼  查看完整内容

本帖被以下文库推荐

沙发
hopewell 发表于 2010-7-23 15:49:08
  1. data raw;
  2.         input date yymmdd8. week;
  3.         format date yymmdd10.;
  4. datalines;
  5. 20100628 1
  6. 20100629 1
  7. 20100630 1
  8. 20100701 1
  9. 20100702 1
  10. 20100705 2
  11. 20100706 2
  12. 20100707 2
  13. 20100708 2
  14. 20100709 2
  15. 20100712 3
  16. 20100713 3
  17. 20100714 3
  18. ;

  19. data out(drop=_temp);
  20.         _temp=0;
  21.         do _n_=1 by 1 until(last.week);
  22.                 set raw;
  23.                 by week;
  24.                 _temp+1;
  25.         end;
  26.         if _temp=5 then output;
  27.         do _n_=1 to _n_;
  28.                 set raw;
  29.                 if _temp<5 then output;
  30.         end;
  31. run;
复制代码
已有 4 人评分学术水平 热心指数 收起 理由
zhentao + 1 + 1 精彩帖子
soporaeternus + 1 + 1 纯粹路过看高手
crackman + 1 + 1 呵呵,开始转战人大论坛了
jingju11 + 1 + 1

总评分: 学术水平 + 4  热心指数 + 4   查看全部评分

藤椅
moonstarpursuit 发表于 2010-7-23 15:51:24
data test;
        input date $ result;
        week=week(input(date,yymmdd10.));
        datalines;
20100628 1     
20100629 1     
20100630 1   
20100701 1   
20100702 1   
20100705 2   
20100706 2   
20100707 2   
20100708 2   
20100709 2     
20100712 3     
20100713 3     
20100714 3  
;
run;


proc sql;
        create table test1 as
        select *,count(*) as days
        from test
        group by week
        order by week,date;
quit;

data test1;
        set test1;
        by week date;
        if days<5 then output;
        else if last.week then output;
run;

板凳
yyda 发表于 2010-7-24 23:24:52
3# moonstarpursuit


我用你的方法实现了,非常感谢,但是我又有个新问题想请教一下:
201006281
201006291
201006301
201007011
201007021想要的结果:
201007052201007021
201007062201007092
201007072201007143
201007082201007194
201007092201007205
201007123201007215
201007133201007225
201007143
201007154
201007164
201007174
201007184
201007194
201007205
201007215
201007225


就是我现在的数据中间也会遇到不足一周的情况,但是这些数据我不要,只要最后不足一周的数据,其余都取最后一天的数据,能再帮帮我解决一下吗?非常感谢!

报纸
yyda 发表于 2010-7-24 23:29:39
2# hopewell




很感谢你,你的方法很好,但是我现在又遇到了新的问题,你能帮忙再看看吗?

地板
hopewell 发表于 2010-7-25 09:59:24
  1. data raw(drop=last_week);
  2.         retain last_week;
  3.         if _n_=1 then
  4.                 do until(last);
  5.                         set raw end=last;
  6.                         last_week=max(week,last_week);
  7.                 end;
  8.         set raw;
  9.         by week;
  10.         if week=last_week then output;
  11.         else if last.week then output;
  12. run;
复制代码

7
zhentao 发表于 2010-7-25 13:57:03
学习了。。。

8
loures 发表于 2010-7-25 23:13:36
data raw;
  input date yymmdd8. week;
  format date yymmdd10.;
datalines;
20100628 1
20100629 1
20100630 1
20100701 1
20100702 1
20100705 2
20100706 2
20100707 2
20100708 2
20100709 2
20100712 3
20100713 3
20100714 3
20100719 4
;
run;
proc sql noprint;
  select max(week) into :max_week
   from raw;
quit;
proc sort data=raw;
  by week date;
run;

data raw_slct;
  set raw;
  by week;
  if last.week or week=&max_week then output;
run;
来这里,是因为它的好,还有曾经的向往、奋斗与遗憾!

9
zhentao 发表于 2010-7-26 14:30:10
这么好的程序帖子,愣是没有多少人顶,看。不知道都想些什么。

我顶上去。

其实,学习sas一定要多看其他人的程序,是最快的捷径。

况且,本坛的几位高人都在这个帖子露脸了。

10
一眼瞬间 发表于 2010-8-13 04:06:10
学习了!
高人啊!

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

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