n*******r 发帖数: 618 | 1 如果我有两个dataset A和B,用ID number 相连
A里面每个人有几条记录,B里面每个人一条,用date排列
我想找出来每个人在A里面和B里的时间最相近的那条记录,
怎么弄好?
谢谢! |
s*******f 发帖数: 148 | 2 不确定我是否理解对了你要表达的~
但是感觉上用sql做应该最方便吧。
【在 n*******r 的大作中提到】 : 如果我有两个dataset A和B,用ID number 相连 : A里面每个人有几条记录,B里面每个人一条,用date排列 : 我想找出来每个人在A里面和B里的时间最相近的那条记录, : 怎么弄好? : 谢谢!
|
n*******r 发帖数: 618 | 3 en,我也想用sql...
这个几个record之间时间比较怎么搞阿?
【在 s*******f 的大作中提到】 : 不确定我是否理解对了你要表达的~ : 但是感觉上用sql做应该最方便吧。
|
A*******s 发帖数: 3942 | 4 我没想到非常简便的方法
不过大概的方法是abs(a.date-b.date) as gap,
然后把每组最小的gap选出来
【在 n*******r 的大作中提到】 : en,我也想用sql... : 这个几个record之间时间比较怎么搞阿?
|
n*******r 发帖数: 618 | 5 ok,大概也只好这样,谢谢
我回头来试试
【在 A*******s 的大作中提到】 : 我没想到非常简便的方法 : 不过大概的方法是abs(a.date-b.date) as gap, : 然后把每组最小的gap选出来
|
h*e 发帖数: 10233 | 6 这已经很简便了,还有必要再简便吗?呵呵
【在 A*******s 的大作中提到】 : 我没想到非常简便的方法 : 不过大概的方法是abs(a.date-b.date) as gap, : 然后把每组最小的gap选出来
|
o****o 发帖数: 8077 | 7 use ID# as a BY variable, A is your main data set, B is your seed
and use
PROC FASTCLUS maxiter=0 seed=B replace=NONE data=A out=AB;
var date;
run; |
l*********s 发帖数: 5409 | 8 Man, your knowledge about SAS is fathonless.
【在 o****o 的大作中提到】 : use ID# as a BY variable, A is your main data set, B is your seed : and use : PROC FASTCLUS maxiter=0 seed=B replace=NONE data=A out=AB; : var date; : run;
|
w*******t 发帖数: 928 | 9 嗯,练了一下。学习了。
data A;
infile cards;
input id $ date mmddyy10.;
format date mmddyy10.;
cards;
111 10/12/2010
111 05/14/2010
111 01/04/2008
222 05/25/2009
333 02/15/2009
333 03/15/2010
;
run;
data B;
infile cards;
input id $ date mmddyy10.;
format date mmddyy10.;
cards;
111 02/14/2010
222 04/20/2006
333 03/14/2010
; run;
PROC FASTCLUS maxiter=0 seed=B replace=NONE data=A out=AB(drop=cluster)
MAXCLUSTERS=999;
var date;
run;
proc sort data=ab; by id distance; run;
data
【在 o****o 的大作中提到】 : use ID# as a BY variable, A is your main data set, B is your seed : and use : PROC FASTCLUS maxiter=0 seed=B replace=NONE data=A out=AB; : var date; : run;
|
s******r 发帖数: 1524 | 10 haha,
you only keep one copy if there are two record in a with same distance.
try following. check 333
data A;
infile cards;
input id $ date mmddyy10.;
format date mmddyy10.;
cards;
111 10/12/2010
111 05/14/2010
111 01/04/2008
222 05/25/2009
333 03/12/2010
333 03/16/2010
;
run;
data B;
infile cards;
input id $ date mmddyy10.;
format date mmddyy10.;
cards;
111 02/14/2010
222 04/20/2006
333 03/14/2010
; run;
PROC FASTCLUS maxiter=0 seed=B replace=NONE data=A out=AB(d
【在 w*******t 的大作中提到】 : 嗯,练了一下。学习了。 : data A; : infile cards; : input id $ date mmddyy10.; : format date mmddyy10.; : cards; : 111 10/12/2010 : 111 05/14/2010 : 111 01/04/2008 : 222 05/25/2009
|
o****o 发帖数: 8077 | 11 switch B and A in seed= and data=
/******************/
data A;
infile cards;
input id $ date mmddyy10.;
format date mmddyy10.;
cards;
111 10/12/2010
111 05/14/2010
111 01/04/2008
222 05/25/2009
333 02/15/2009
333 03/15/2010
;
run;
data B;
infile cards;
input id $ date mmddyy10.;
format date mmddyy10.;
cards;
111 02/14/2010
222 04/20/2006
333 03/14/2010
; run;
data Av/view=Av;
set A; by id;
if first.id then CLUSTER=1; else CLUSTER+1;
run;
%let maxc=3 ; *>=ma
【在 w*******t 的大作中提到】 : 嗯,练了一下。学习了。 : data A; : infile cards; : input id $ date mmddyy10.; : format date mmddyy10.; : cards; : 111 10/12/2010 : 111 05/14/2010 : 111 01/04/2008 : 222 05/25/2009
|
n*******r 发帖数: 618 | 12 哇~~~admire u guys!!
太有钻研精神了!!谢谢帮忙!!
【在 o****o 的大作中提到】 : switch B and A in seed= and data= : /******************/ : data A; : infile cards; : input id $ date mmddyy10.; : format date mmddyy10.; : cards; : 111 10/12/2010 : 111 05/14/2010 : 111 01/04/2008
|