boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - SAS 编程问题 (有包子)
相关主题
请问base(123题)的第114题
问SAS code怎么写
sas help!!
请教两个关于SAS的问题
SAS快捷键问题
请教一个SAS问题
SAS code 问题
SAS code help
急 SAS问题
请问SAS大牛一个关于proc sql join
相关话题的讨论汇总
话题: 2002话题: dt1话题: mmddyy10话题: dt2话题: 2006
进入Statistics版参与讨论
1 (共1页)
EA
发帖数: 3965
1
我有两组数据,包括id 和 日期。他们都是一个id对应多个日期。我想把数据A当base,
left join 数据B,但是条件是,B的日期是在A的日期的前一年内。比如A日期是4/4/
2000,那如果B的日期在4/5/1999 - 4/4/2000,就保留。
A
id dt1
1 4/4/2000
1 4/7/2005
1 9/2/2002
2 3/1/2003
2 2/3/2006
3 5/5/2009
B
id dt2
1 5/1/1999
1 1/1/2007
2 9/8/2002
2 10/1/2002
2 1/2/2006
我希望得到C像这样。
id dt1 dt2
1 4/4/2000 5/1/1999
1 4/7/2005
1 9/2/2002
2 3/1/2003 9/8/2002
2 3/1/2003 10/1/2002
2 2/3/2006 1/2/2006
3 5/5/2009
j******o
发帖数: 127
2
why don't keep "10/1/2002" from data B?
EA
发帖数: 3965
3
看漏了。请问有idea怎么做吗?

【在 j******o 的大作中提到】
: why don't keep "10/1/2002" from data B?
n*****1
发帖数: 172
4
use the intck function in the sql

base,

【在 EA 的大作中提到】
: 我有两组数据,包括id 和 日期。他们都是一个id对应多个日期。我想把数据A当base,
: left join 数据B,但是条件是,B的日期是在A的日期的前一年内。比如A日期是4/4/
: 2000,那如果B的日期在4/5/1999 - 4/4/2000,就保留。
: A
: id dt1
: 1 4/4/2000
: 1 4/7/2005
: 1 9/2/2002
: 2 3/1/2003
: 2 2/3/2006

j******o
发帖数: 127
5
Try this.
data one;
input id dt1 : mmddyy10.;
format dt1 mmddyy10.;
datalines;
1 4/4/2000
1 4/7/2005
1 9/2/2002
2 3/1/2003
2 2/3/2006
3 5/5/2009
;
run;
data two;
input id dt2 : mmddyy10.;
format dt2 mmddyy10.;
datalines;
1 5/1/1999
1 1/1/2007
2 9/8/2002
2 10/1/2002
2 1/2/2006
;
run;
proc sql;
create table obtain as
select a.id, coalesce(a.dt1, b.dt1) as dt1 format mmddyy10., b.dt2
from one a left join
(
select one.*, two.dt2
from one, two
where one.id=two.id and 0<= one.dt1-two.dt2 <=360
) b
on a.id=b.id and a.dt1=b.dt1;
quit;

【在 EA 的大作中提到】
: 看漏了。请问有idea怎么做吗?
h*********1
发帖数: 102
6
data A;
input id dt1: mmddyy10.;
format dt1 mmddyy10.;
datalines;
1 4/4/2000
1 4/7/2005
1 9/2/2002
2 3/1/2003
2 2/3/2006
3 5/5/2009;
run;
data B;
input id dt2: mmddyy10.;
format dt2 mmddyy10.;
datalines;
1 5/1/1999
1 1/1/2007
2 9/8/2002
2 10/1/2002
2 1/2/2006;
run;
proc sql;
create table C as
select A.*, B.dt2
from A
left join B
on A.id=B.id and
(A.dt1 ge B.dt2 ge mdy(month(A.dt1),day(A.dt1),year(A.dt1)-1));
quit;
EA
发帖数: 3965
7
谢谢楼上两位。
1 (共1页)
进入Statistics版参与讨论
相关主题
请问SAS大牛一个关于proc sql join
SAS 问题
完全不懂SAS,急请教一个问题
help:data manipulation
sas date variable exchange
SAS 问题
请教一个SQL 的问题
请教大家一个SAS问题
问个sas日期小白问题
[提问]怎样sort这个dataset?
相关话题的讨论汇总
话题: 2002话题: dt1话题: mmddyy10话题: dt2话题: 2006