【问题标题】:fuzzy join with sqldf使用 sqldf 进行模糊连接
【发布时间】:2018-07-25 05:03:45
【问题描述】:

我希望此代码在第 1 行返回 data.framename = 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

【问题讨论】:

  • 在您的情况下,默认 drv 是什么,因为我收到代码错误 Error in rsqlite_send_query(conn@ptr, statement) : no such column: df2.EC
  • @akrun 我如何找到它?
  • 好的,我认为该示例正在创建 V1、V2 作为 df2 的列,因为有一些空白

标签: r sqldf fuzzy-comparison


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-31
    • 2019-05-24
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 2019-03-07
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多