0
# example
a <- data.frame(name=c("A","B","C"), KW=c(201902,201904,201905),price=c(1.99,3.02,5.00))
b <- data.frame(KW=c(201903,201904,201904),price=c(1.98,3.00,5.00),name=c("a","b","c"))

我想用模糊逻辑匹配 a 和 b,使用变量 KW 和价格。我想允许 +/- 1 的 KW 容差和 +/- 0.02 的价格容差。

期望的结果应该是这样的:

name.x   KW.x price.x   KW.y price.y name.y
1    A 201902    1.99 201903    1.98      a
2    B 201904    3.02 201904    3.00      b
3    C 201905    5.00 201904    5.00      c

我更愿意使用该fuzzyjoin软件包找到解决方案。到目前为止,我尝试使用该fuzzy_inner_join函数并使用参数指定我想要的 KW 和价格公差match_fun。但是,我无法让它工作。

寻求帮助,如何解决这个问题。

4

1 回答 1

0

您可以创建两个数据帧的笛卡尔积,merge然后使用subset符合我们所需条件的行。

subset(merge(a, b, by = NULL), abs(KW.x - KW.y) <= 1 & 
                               abs(price.x - price.y) <= 0.02)

#  name.x   KW.x price.x   KW.y price.y name.y
#1      A 201902    1.99 201903    1.98      a
#5      B 201904    3.02 201904    3.00      b
#9      C 201905    5.00 201904    5.00      c
于 2020-03-27T10:07:33.690 回答