SAS中文论坛

标题: 数据比对 [打印本页]

作者: shiyiming    时间: 2011-10-12 10:27
标题: 数据比对
有这样两张表
1表有两个时间字段分别是datetime1,datetime2
2表有两个字段一个时间字段datetime,一个数字型字段sign、
现在要求将每个datetime值与每一个1表中的观测进行比对就是datetime1<=datetime<=datetime2,一旦条件成立那么2表中的sign就赋值为1
这个代码如何写?
作者: shiyiming    时间: 2011-10-12 13:47
标题: Re: 数据比对
不知道能不能用data步来完成?
作者: shiyiming    时间: 2011-10-12 14:22
标题: Re: 数据比对
可否考虑先merge领个表,然后再比较,赋值,keep 需要的变量。
作者: shiyiming    时间: 2011-10-12 16:29
标题: Re: 数据比对
这个好像不能用merge把,两个表并无相关字段,并且我是要两张表全表比对
作者: shiyiming    时间: 2011-10-12 18:11
标题: Re: 数据比对
data want;
set tabel1;set tabel2;
if datetime1<=datetime<=datetime2 then sign=1;
run;
作者: shiyiming    时间: 2011-10-13 09:09
标题: Re: 数据比对
LS的好像不对啊,这个没人知道吗?用SQL也可以,data步我看了看好像不能实现
作者: shiyiming    时间: 2011-10-14 10:47
标题: Re: 数据比对
我的理解是不是你要用2表中的datetime和1表中的每一条比较,如果找到一条满足你条件的就赋值sign=1?
如果如此,我假设你的1表中的时间跨度是不交叉的。
那么你可以这么做,将1表作成format,有start,有end,label可以设为Y,然后2表用这个format去判断是不是等于Y,是sign=1,否sign=0.
作者: shiyiming    时间: 2011-10-14 16:30
标题: Re: 数据比对
嗯,是这个意思,但是你说的我不是很明白,学SAS没多久
作者: shiyiming    时间: 2011-10-14 16:38
标题: Re: 数据比对
data format;
set a;
retain fmtname '$exist';
start=datetime1;
end=datetime2;
label='Y';
run;
proc format cntlin=format;
run;
data result;
set b;
if put(datetime,$exist.)='Y' then sign=1;else sign=0;
run;
作者: shiyiming    时间: 2011-10-14 22:43
标题: Re: 数据比对
翻了下老帖,可参考下
[url:10de1uhq]http://mysas.net/forum/viewtopic.php?f=4&t=4816[/url:10de1uhq]
作者: shiyiming    时间: 2011-10-17 12:43
标题: Re: 数据比对
谢谢LS两位




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2