全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1902 8
2015-08-13
sas 两数据集的变量匹配,使用proc sql过程

实现目的:l连接两个数据集时,如果两个dataset中name一致,年龄相差1岁以内,认为他们可能是同一个人
                 需要在主数据集中标注这部分可疑对象

如何用sas实现?

dataset total.total     即(a)   :   name  birth 。。。。and 部分其他变量
dataset  summary.data  即 (b):   name01  birthday   。。。。and 部分其他变量

sas 程序:

proc sql;
create table ab as
select a.*, b.wage
from total.total as a left join summary.data as b
on a.name=b.name01 and yrdif(a.birth,b.birthday ,"actual")<1;

这种方法得到的结果,得到的观测对象数量是原主数据集的好几倍,好像出错了?
而且匹配成功的变量都是名字为缺失值的观测对象,怎么解决?
在on语句中,yrdif(a.birth,b.birthday ,"actual")<1这种表达方式可行吗?



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-8-13 22:19:50
不了解,顶一下帖子,希望楼主早日解决问题。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-8-13 22:53:11
楼主忘了取绝对值了。另外推荐用“age” option

abs(yrdif(a.birth,b.birthday ,"age"))<1
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-8-14 01:13:12
yrdif(a.birth,b.birthday ,"actual")<=1
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-8-14 09:21:37
chiant 发表于 2015-8-13 22:53
楼主忘了取绝对值了。另外推荐用“age” option

abs(yrdif(a.birth,b.birthday ,"age"))
运行的结果依然是yrdif参数无效,是因为在on语句中加入参与计算的函数不合适?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-8-14 09:22:13
teqel 发表于 2015-8-14 01:13
yrdif(a.birth,b.birthday ,"actual")
日志提示程序中的yrdif参数无效
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群