与sqldf模糊连接

时间:2018-02-14 15:07:06

标签: r sqldf fuzzy-comparison

我希望此代码在第1行中返回data.frame name = helicase。如何与sqldf进行此类比较?

require(data.table)
df <- fread('EC              name
    2.1.1.233       helicase
    4.1.3.3         phosphatase
    1.3.2.1,2.5.4.1 lipase
')
df2 <- fread('     PDB     EC         
    1uay    2.1.1
    5ad4    4.1.3.3   
')


require(sqldf)

sqldf('
select  df2.*
        , df.name
from    df2
        left join df
          on df2.EC like df.EC
')

#    PDB      EC        name
# 1 1uay   2.1.1        <NA>
# 2 5ad4 4.1.3.3 phosphatase

1 个答案:

答案 0 :(得分:2)

借用类似的答案here,你想要连接百分号:

sqldf("
select  df2.*
        , df.name
from    df2
        left join df
          on like('%'||df2.EC||'%', '%'||df.EC||'%')")