楼主: TITANATE
2666 4

[原创博文] 求指点~一个SAS处理日期变量的问题 [推广有奖]

  • 2关注
  • 0粉丝

初中生

23%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
62 点
帖子
7
精华
0
在线时间
13 小时
注册时间
2012-8-12
最后登录
2014-5-29

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各路大神,情况是这样的,有两个变量,id 和 date。现在首先要将数据按id分组,然后计算每组从最早一天到最晚一天的总天数(包括没有在date中出现的日期),记为m。接着计算date中有多少不同的日期,记为n。如果n<0.5m的话,则将整组观测删除。请问这个代码该如何写呢?
论文需要,还请各位大神帮忙,非常感激!:)

数据举例:

id    date
1     20030520
1     20030521
1     20030523
1     20030523
1     20030525
1     20030525
2     20030520
2     20030520
2     20030525
2     20030525

1组中,m=6,n=4,应保留;
2组中,m=6,n=2,应删除。


谢谢各位啦!
二维码

扫码加我 拉你入群

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

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

关键词:日期变量 求指点 date ATE

沙发
chenys625 发表于 2012-9-10 23:50:16 |只看作者 |坛友微信交流群
按id和date排序,然后用first和last这两个临时变量,以及retain这个命令可以满足你的需求。自己先编着试试吧~

使用道具

藤椅
chenys625 发表于 2012-9-10 23:52:18 |只看作者 |坛友微信交流群
对了 你那个date不是时间格式 得处理一下 挺整齐的 不难处理
已有 1 人评分热心指数 收起 理由
TITANATE + 1 感谢点醒了我另一个code的问题!:)

总评分: 热心指数 + 1   查看全部评分

使用道具

板凳
可~乐 发表于 2012-9-11 00:51:31 |只看作者 |坛友微信交流群
  1. data test;
  2. input id date;
  3. cards;
  4. 1 20030520
  5. 1 20030521
  6. 1 20030523
  7. 1 20030523
  8. 1 20030525
  9. 1 20030525
  10. 2 20030520
  11. 2 20030520
  12. 2 20030525
  13. 2 20030525
  14. ;

  15. data test1;
  16.         set test;
  17.         date_new=mdy(substr(put(date,8.),5,2),substr(put(date,8.),7,2),substr(put(date,8.),1,4));
  18. run;

  19. proc sql noprint;
  20.         create table test2 as select
  21.         id,date

  22.         from test1
  23.         group by id
  24.         having max(date_new)-min(date_new)+1<2*count(distinct date_new);
  25. quit;
复制代码

使用道具

报纸
pobel 在职认证  发表于 2012-9-11 17:23:35 |只看作者 |坛友微信交流群
data test;
input id $    date : yymmdd8.;
format date yymmdd10.;
cards;
1     20030520
1     20030521
1     20030523
1     20030523
1     20030525
1     20030525
2     20030520
2     20030520
2     20030525
2     20030525
;

proc sql;
   create table wanted as
    select distinct id,max(date)-min(date)+1 as m, count(distinct date) as n
         from test
         group by id
         having n>=0.5*m;
quit;
和谐拯救危机

使用道具

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

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

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

GMT+8, 2024-11-6 07:22