SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1202|回复: 10
打印 上一主题 下一主题

数据比对

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-10-12 10:27:50 | 只看该作者

数据比对

有这样两张表
1表有两个时间字段分别是datetime1,datetime2
2表有两个字段一个时间字段datetime,一个数字型字段sign、
现在要求将每个datetime值与每一个1表中的观测进行比对就是datetime1<=datetime<=datetime2,一旦条件成立那么2表中的sign就赋值为1
这个代码如何写?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2011-10-12 13:47:57 | 只看该作者

Re: 数据比对

不知道能不能用data步来完成?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2011-10-12 14:22:39 | 只看该作者

Re: 数据比对

可否考虑先merge领个表,然后再比较,赋值,keep 需要的变量。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2011-10-12 16:29:51 | 只看该作者

Re: 数据比对

这个好像不能用merge把,两个表并无相关字段,并且我是要两张表全表比对
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2011-10-12 18:11:07 | 只看该作者

Re: 数据比对

data want;
set tabel1;set tabel2;
if datetime1<=datetime<=datetime2 then sign=1;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2011-10-13 09:09:09 | 只看该作者

Re: 数据比对

LS的好像不对啊,这个没人知道吗?用SQL也可以,data步我看了看好像不能实现
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2011-10-14 10:47:09 | 只看该作者

Re: 数据比对

我的理解是不是你要用2表中的datetime和1表中的每一条比较,如果找到一条满足你条件的就赋值sign=1?
如果如此,我假设你的1表中的时间跨度是不交叉的。
那么你可以这么做,将1表作成format,有start,有end,label可以设为Y,然后2表用这个format去判断是不是等于Y,是sign=1,否sign=0.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2011-10-14 16:30:53 | 只看该作者

Re: 数据比对

嗯,是这个意思,但是你说的我不是很明白,学SAS没多久
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2011-10-14 16:38:08 | 只看该作者

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;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2011-10-14 22:43:56 | 只看该作者

Re: 数据比对

翻了下老帖,可参考下
[url:10de1uhq]http://mysas.net/forum/viewtopic.php?f=4&t=4816[/url:10de1uhq]
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-5-7 22:08 , Processed in 0.094561 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表