使用模糊逻辑连接两个数据集

ste*_*tor 9 join r string-matching fuzzy-logic fuzzy-comparison

我正在尝试在两个数据集之间的R中进行模糊逻辑联接:

  • 第一个数据集具有位置名称和称为 config
  • 第二个数据集具有一个位置的名称和两个附加属性,在将它们加入第一个数据集之前需要对其进行汇总。

我想使用该name列在两个数据集之间进行联接。但是,该name列在数据集中可能包含其他字符或前导字符,或者在较大的单词内部包含一个单词。因此,例如,如果我们查看这两个数据集,我希望名称OPAL加入OPALAS,而SAUSALITO Y加入SAUSALITO。

Dataset1:    
     Name           Config
     ALTO D         BB
     CONTRA         ST
     EIGHT A        DD
     OPALAS         BB
     SAUSALITO Y    AA
     SOLANO J       ST

Dataset2:    
    Name       Age     Rank
    ALTO D     50      2
    ALTO D     20      6
    CONTRA     10      10
    CONTRA     15      15
    EIGHTH     18      21
    OPAL       19      4
    SAUSALITO  2       12
    SOLANO     34      43
Run Code Online (Sandbox Code Playgroud)

数据集2汇总代码

Data2a <- summaryBy(Age ~ Name,FUN=c(mean), data=Data2,na.rm=TRUE)
Data2b <- summaryBy(Rank ~ Name,FUN=c(sum), data=Data2,na.rm=TRUE)
Data2 <- data.frame(Data2a$Name, Data2a$Age.mean, Data2b$Rank.sum)

Desired Outcome:
    Name        Config  Age   Rank
    ALTO D      BB      35    8
    CONTRA      ST      12.5  25
    EIGHT A     DD      18    21
    OPALAS      BB      19    4
    SAUSALITO Y AA      12    5
    SOLANO J    ST      34    43
Run Code Online (Sandbox Code Playgroud)

ste*_*tor 9

我可以使用Fuzzyjoin包将两个数据集结合起来:

library(fuzzyjoin)
stringdist_inner_join(Dataset1, Data2,
     by ="Name", distance_col = NULL)
Run Code Online (Sandbox Code Playgroud)