例如,在SAS中,我在数据集A(左下方)中有5个ID。有一个数据集B,(可能包含一些A的ID,在右下方)。我需要的是找到一个独特的组合(A是主要结果数据集)A和B有相同的性别,年龄范围在5和收入范围内在10000.Tt可能有很多b.id可以与a.id合并。但这是踢,我只能使用b.id一次。在这种情况下,101合并106,102合并111,103合并112,105合并110.抱歉,我很难如何描述我的问题。希望它足够清楚。谢谢!
ID sex age income ID sex age income
101 F 30 20000 106 F 26 21000
102 M 20 10000 102 M 20 10000
103 F 38 30000 110 M 45 44000
104 M 55 35000 111 M 19 14000
105 M 43 45000 112 F 33 34000
结果
ID_a sex_a age_a income_a ID_b sex_b age_b income_b
101 F 30 20000 106 F 26 21000
102 M 20 10000 111 M 19 14000
103 F 38 30000 112 F 33 34000
104 M 55 35000
105 M 43 45000 110 M 45 44000
答案 0 :(得分:0)
select a.Id, b.Id from SetA a
left join SetB b on a.sex = b.sex and
a.age between b.age - 5 and b.age + 5 and
a.income between b.income - 10000 and b.income + 10000
答案 1 :(得分:0)
您应该能够使用this question答案中使用的技术进行模糊匹配,同时确保每个b.id仅使用一次。
我们的想法是将您的B数据集加载到临时数组/哈希对象中,这样您就可以跟踪在将它们匹配到A时已经使用过的b.ids。
答案 2 :(得分:-1)
SELECT
A.ID,
B.ID
FROM lefttable A
INNER JOIN righttable B
ON (A.sex = B.sex) AND (A.age BETWEEN B.age -5 AND B.age + 5) AND (A.income BETWEEN B.income -10000 AND B.age + 10000)