全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2783 4
2012-09-10
各路大神,情况是这样的,有两个变量,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,应删除。


谢谢各位啦!
二维码

扫码加我 拉你入群

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

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

全部回复
2012-9-10 23:50:16
按id和date排序,然后用first和last这两个临时变量,以及retain这个命令可以满足你的需求。自己先编着试试吧~
二维码

扫码加我 拉你入群

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

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

2012-9-10 23:52:18
对了 你那个date不是时间格式 得处理一下 挺整齐的 不难处理
二维码

扫码加我 拉你入群

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

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

2012-9-11 00:51:31
复制代码
二维码

扫码加我 拉你入群

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

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

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;
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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