楼主: fengzifz
4822 10

同一ID号中如果用第一行的THRU_DATE减去第二行的FROM_DATE [推广有奖]

  • 0关注
  • 1粉丝

硕士生

26%

还不是VIP/贵宾

-

威望
0
论坛币
217 个
通用积分
0
学术水平
1 点
热心指数
3 点
信用等级
0 点
经验
3478 点
帖子
192
精华
0
在线时间
95 小时
注册时间
2010-4-25
最后登录
2017-11-21

楼主
fengzifz 发表于 2011-5-4 00:32:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
TYPE FROM_DATETHRU_DATEID
1 2003010120030115 1
2 2003013020030211 1
1 20030212 20030225 1
1 2003091020030930 2
1 2003121220031230 2

要求:1、在同一ID号中
            2、如果用第一行的THRU_DATE减去第二行的FROM_DATE的绝对值是小于30,而且类型(TYPE)不同
            3、满足上述条件就把同一ID号的观测值全部输出。

请教大侠我怎么能实现上述目的?
困扰了我5日5夜啊啊啊啊啊啊........啊.......................啊.........................................................啊.......................................................................................
二维码

扫码加我 拉你入群

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

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

关键词:date From ATE Rom fro SAS

回帖推荐

baoaibaobao 发表于10楼  查看完整内容

9# fengzifz 不知道我理解的对否,下面是代码:

本帖被以下文库推荐

沙发
junuylia 发表于 2011-5-4 06:43:43
只比较前两行吗?还是同一ID的每一条数据都和第1条比较?以下代码实现了每一行都和第一行比较。如果是只需要比较前两行,只要将代码稍作调整即可
  1. data one;
  2. input TYPE 1-3        FROM_date yymmdd8. @+1        THRU_date yymmdd8.        ID;
  3. datalines;
  4. 1  20030101 20030115 1
  5. 2  20030130 20030211 1
  6. 1  20030212 20030225 1
  7. 1  20030910 20030930 2
  8. 1  20031212 20031230 2
  9. ;


  10. proc print data=one;
  11. format from_date yymmdd10. thru_date yymmdd10.;
  12. run;

  13. data two;
  14. set one;
  15. by id;
  16. if first.id then do;
  17.   compare=thru_date ;
  18.   oType=type;
  19. retain compare oType;
  20. end;
  21. else do;
  22.   if abs(from_date-compare)<30 and type ne oType then do; output; end;
  23. end;
  24. drop oType compare;
  25. run;

  26. proc print data=two;
  27. format from_date yymmdd10. thru_date yymmdd10.;
  28. run;

  29. data three;
  30. merge one(in=in1) two(in=in2);
  31. by id;
  32. if(in1 and in2) then output;
  33. run;

  34. proc print data=three;
  35. run;
复制代码
已有 1 人评分热心指数 收起 理由
fengzifz + 1 好的意见建议

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

藤椅
fengzifz 发表于 2011-5-4 10:01:37
2# junuylia 是同一ID的观测值,上一行观测值和下一行观测比较

板凳
leedx 发表于 2011-5-4 10:06:53
学习啦~不错的程序~

报纸
junuylia 发表于 2011-5-4 10:08:47
是同一ID的所有值和第一个值比较,还是每条记录和其上一条记录比较? 反正不管是怎么样,用retain保留你需要的值。

地板
fengzifz 发表于 2011-5-4 12:05:20
是同一ID中,每条记录和其上一条记录比较

7
wb8686 发表于 2011-5-4 13:16:47
还是不 明白啊,绝对值是小于30是只比较每个id前两行吗?,type 不同,是指同一个id内,所以的type 都不能有重复吗?还是也只比较每个id前两行的type?

8
ntsean 发表于 2011-5-4 13:21:36
似乎楼主说的不清楚

9
fengzifz 发表于 2011-5-4 18:16:06
其实type是医疗保险申报的类型,1是medicare,2是medicaid,都是美国的两种险种。medicare的主要服务对象是老人,medicaid的主要服务对象是残障人和低收入者。
有一类人,他们既是老人,又是残疾人,那这两种人就可能利用这种双重身份去进行医保欺诈。他们可能今天拿着medicare的医保卡去A医院院享受medicare的医疗保险服务。明天拿着medicaid的医保卡去B医院享受medicaid的医疗保险服务。但美国似乎是不允许这样的,具体我也不清楚。
这种叫“做跨险种、跨院所申报”。反正我的目的就是要找出这种人。
要找出这种人,很关键的地方就是要看他们去医院接受医疗服务的日期,如果他们的每一条医疗记录的日期是连续的,而且是在不同的院所接受医疗服务,享受不同的医保险种。那么他们很大可能就是在进行医疗欺诈。

但由于本来的数据有问题,我最后整理出来的数据集只有18000行。
如果谁有兴趣的话,我愿意分享我最后整理出来的数据集,大家一起研究研究。

10
baoaibaobao 发表于 2011-5-4 19:53:10
9# fengzifz 不知道我理解的对否,下面是代码:
  1. data have;
  2. input TYPE FROM_date:yymmdd8. THRU_date:yymmdd8. ID;
  3. format FROM_date THRU_date yymmdd10.;
  4. datalines;
  5. 1  20030101 20030115 1
  6. 2  20030130 20030211 1
  7. 1  20030212 20030225 1
  8. 1  20030910 20030930 2
  9. 1  20031212 20031230 2
  10. 1  20031212 20031230 2
  11. 1  20030910 20030930 3
  12. 2  20030912 20031230 3
  13. 2  20031212 20031230 3
  14. 1  20030910 20031230 4
  15. 1  20031212 20030930 4
  16. 2  20031212 20031230 4
  17. ;
  18. data want;
  19.         set have;
  20.         n=_n_;
  21. run;
  22. proc sql noprint;
  23. select distinct id into:id separated by ',' from
  24.         (select a.* from want a join want b
  25.                 on a.n-b.n=-1
  26.                 and abs(a.thru_date-b.from_date)<30
  27.                 and a.id=b.id
  28.                 and a.type^=b.type
  29.                 group by a.id);
  30. create table want1 as
  31.         select * from have where id in (&id);
  32. drop table want,have;
  33. quit;
复制代码
已有 1 人评分学术水平 热心指数 收起 理由
fengzifz + 1 + 1 It's wonderful! what you do is I want.

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

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 15:08