0

I was expecting this code to return a data.frame with name = helicase in row 1. How can I make this type of comparison with 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
IceCreamToucan
  • 28,083
  • 2
  • 22
  • 38

1 Answers1

2

Borrowing from a similar answer here, you want to concatenate the percent signs:

sqldf("
select  df2.*
        , df.name
from    df2
        left join df
          on like('%'||df2.EC||'%', '%'||df.EC||'%')")
David Klotz
  • 2,401
  • 1
  • 7
  • 16