楼主: 不是吧258123
1996 11

求解一个sas数据选择的问题 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

88%

还不是VIP/贵宾

-

威望
0
论坛币
273 个
通用积分
3.4623
学术水平
6 点
热心指数
5 点
信用等级
4 点
经验
11212 点
帖子
143
精华
0
在线时间
265 小时
注册时间
2013-10-20
最后登录
2026-1-3

楼主
不是吧258123 发表于 2015-7-17 08:54:24 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
零件ID   随访状态    1 代表正常
001             1          2  代表损坏  
001            1           3  代表老化
001           1
001          1        
001          1
002         1
002           2
002       1
003       1
003       1
003       3
003       2
我有一个上面类型的数据,随访状态中2代表损坏,1 代表正常,随访是按照时间顺序进行。在ID002中,第二次随访的结果为2损坏,但第三次结果又出现了正常,这种情况是不可能的,因为002已经损坏,不可能恢复正常了,这种逻辑关系不正确。我想找出这种逻辑错误的值,(每个ID随访的次数不同),请各位大侠指教。

二维码

扫码加我 拉你入群

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

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

关键词:数据选择 各位大侠 第三次

回帖推荐

Tigflanker 发表于9楼  查看完整内容

这样呢?

沙发
不是吧258123 发表于 2015-7-17 08:56:59
也就说我想找出,出现2的随访结果后,又出现1的随访结果的数据

藤椅
532884770 发表于 2015-7-17 09:02:21
可以参考一下 lag 函数,简单了

板凳
不是吧258123 发表于 2015-7-17 11:10:57
532884770 发表于 2015-7-17 09:02
可以参考一下 lag 函数,简单了
不知道可否提示的跟具体点?谢谢

报纸
Tigflanker 发表于 2015-7-17 13:13:11
  1. data have;
  2. input id condition;
  3. cards;
  4. 001 1
  5. 001 1
  6. 001 1
  7. 001 1
  8. 001 1
  9. 002 1
  10. 002 2
  11. 002 1
  12. 003 1
  13. 003 1
  14. 003 3
  15. 003 2
  16. ;run;

  17. data one;
  18.   set have;

  19.   mark = ifn(condition = 1 and lag(condition) = 2,1,0);
  20. run;

  21. proc sql noprint;
  22.   create table two as
  23.     select * from one
  24.         group by id
  25.         having sum(mark)
  26.         ;
  27. quit;
复制代码
按需取,one数据集只是把那一条标记出来的;two是把相应有问题的组揪出来了。

地板
不是吧258123 发表于 2015-7-17 13:24:34
Tigflanker 发表于 2015-7-17 13:13
按需取,one数据集只是把那一条标记出来的;two是把相应有问题的组揪出来了。
太感谢了,我跑一下试试

7
不是吧258123 发表于 2015-7-17 13:37:48
Tigflanker 发表于 2015-7-17 13:13
按需取,one数据集只是把那一条标记出来的;two是把相应有问题的组揪出来了。
你好,刚看了你的程序,跑了一下出来结果了,不过有一个问题,你的one数据集是不是有个if mark=1;这个语句啊?还有就是这个程序好像只能找出2后面是1的这样的结果,但数据中会有类似 1 1 2 3 1,这样的结果没办法选择出来吧?还请赐教

8
不是吧258123 发表于 2015-7-17 13:39:06
Tigflanker 发表于 2015-7-17 13:13
按需取,one数据集只是把那一条标记出来的;two是把相应有问题的组揪出来了。
我想找的结果是只要出现2的结局后,以后的所有次数的随访,只要出现1的结局,我就需要找出来,有什么好的办法么?谢谢你的帮助

9
Tigflanker 发表于 2015-7-17 13:57:18
不是吧258123 发表于 2015-7-17 13:39
我想找的结果是只要出现2的结局后,以后的所有次数的随访,只要出现1的结局,我就需要找出来,有什么好的 ...
  1. data one;
  2.   set have;
  3.   by id;

  4.   retain temp;
  5.   if first.id then temp = 0;
  6.   if condition = 2 then temp = 1;
  7.   if condition = 1 and temp = 1 then mark = 1;
  8. run;
复制代码
这样呢?

10
不是吧258123 发表于 2015-7-17 14:00:22
Tigflanker 发表于 2015-7-17 13:57
这样呢?
好的,我再试试,太感谢了

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

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