楼主: dbjqw
2928 12

如何找出某变量中满足条件的元素 [推广有奖]

11
正午 发表于 2014-3-23 22:13:41
data a;
input id date;
cards;
1     201001
1     201002
1     201003
1     201004
1     201005
1     201006
1     201007
1     201008
2     201001
2     201002
2     201003
2     201004
2     201005
2     201006
2     201007
2     201008
3     201001
3     201002
3     201003
3     201004
3     201005
3     201006
3     201007
3     201008
;
run;

data b ;
input id date;
cards;
1   201003
2   201004
3   201006
;
run;
proc sort data=a; by id;run;
proc sort data=b ;by id;run;

data c;
set a;
by id;
if first.id then do;
        set b(rename=(date=date_b));       
end;
if date=date_b-2 or date=date_b+2 then output;
run;

没有转换成日起值,直接计算的,你可以换成日期格式计算。

12
sharpe123 在职认证  发表于 2014-3-24 16:21:12
farmman60 发表于 2014-3-23 21:03
data a;
input id    date;
cards;
不是很看的懂,留着慢慢思考,
非常感谢!

13
learsaas 发表于 2014-4-1 08:40:02 来自手机
手写的代码,没调试过,需楼主自己去调试了:
proc sort data=a;
    by id date;
run;
proc sort data=b;
    by id date;
run;
data c1 c2;
    Merge a b(rename=(date=basedate));
    By id;
    If date<basedate then output c1;
    Else if date>basedate then output c2;
    Drop basedate;
Run;
Proc sort data=c1;
    By id descending date;
Run;
Data c1;
    Set c1;
    By id;
    If first.id then n=0;
    N+1;
    If n<=2;
    Drop n;
Run;
Proc sort data=c1;
    By id date;
Run;
Data c2;
    Set c2;
    By id;
    If first.id then n=0;
    N+1;
    If n<=2;
    Drop n;
Run;
Data c;
    Set c1 c2;
    By id;
Run;

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

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