全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6342 13
2014-03-27
我的问题是这样的:每个 id 在一年中始终对应 4个 target, 我整理数据的规则是:如果 一个(id +target)在前面的year(不一定是连续的年度,只要是之前的年份就行)中,invest的值出现过 value=1, 那么这条数据就要删除。e.g 记录(1 b 2004 1)出现了,那么记录(1 b 2005 0)就要删除掉。
谢谢大神的指教!!!

示例的数据集:

data a;
input id target $ year invest;
cards;
1 a 2004 0
1 b 2004 1
1 c 2004 0
1 d 2004 1
1 a 2005 0
1 b 2005 0
1 c 2005 1
1 d 2005 0
2 a 2007 1
2 b 2007 1
2 c 2007 0
2 d 2007 0
2 a 2009 0
2 b 2009 0
2 c 2009 0
2 d 2009 1
;
run;

二维码

扫码加我 拉你入群

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

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

全部回复
2014-3-27 12:53:11
data b;
   if 0 then set a;
   if _n_=1 then do;
             declare hash h();
            h.definekey('id','target');
                h.definedata('id','target');
                h.definedone();
        end;
        set a;
        if h.find()=0 then delete;
        if invest=1 then h.add();
run;
二维码

扫码加我 拉你入群

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

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

2014-3-27 12:59:54
pobel 发表于 2014-3-27 12:53
data b;
   if 0 then set a;
   if _n_=1 then do;
谢谢大神的指点,可以运行!
二维码

扫码加我 拉你入群

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

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

2014-3-27 13:04:22
Another way:
data a;
input id target $ year invest;
cards;
1 a 2004 0
1 b 2004 1
1 c 2004 0
1 d 2004 1
1 a 2005 0
1 b 2005 0
1 c 2005 1
1 d 2005 0
2 a 2007 1
2 b 2007 1
2 c 2007 0
2 d 2007 0
2 a 2009 0
2 b 2009 0
2 c 2009 0
2 d 2009 1
;
run;

proc sort data=a;
        by id target year;
run;

data b;
        set a;
        by id target;
        retain tp_year tp_flag;
        if first.target then do;
                tp_flag=0;
                tp_year=0;
        end;
        if invest=1 then do;
                tp_flag=1;
                tp_year=year;
        end;
        if tp_flag=1 and tp_year ne year then delete;
        drop tp_:;
run;
二维码

扫码加我 拉你入群

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

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

2014-3-27 13:49:06
466046020 发表于 2014-3-27 13:04
Another way:
data a;
input id target $ year invest;
这个解决方案也很赞!!!同样谢谢您
二维码

扫码加我 拉你入群

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

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

2014-3-27 15:04:36
复制代码
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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