精确的部分字符串匹配-R

时间:2019-09-16 14:44:08

标签: r

我需要根据精确的字符串匹配将两个数据帧连接在一起

我的数据框A包含如下数据:

 alter_table_sql_statement

 ALTER TABLE ANALYSIS_SERVICES_CUBE_PROCESS MODIFY ACTIVE_FLAG DEFAULT 'Y'
 ALTER TABLE FACT_MONTHLY_ASSETS MODIFY UPDATE_DATE DEFAULT 
 ALTER TABLE RSVP_COMMISSION_HIST MODIFY CREDIT_AMOUNT DEFAULT 0
 ALTER TABLE RSVP_COMMISSION_HIST MODIFY SPLIT_CREDIT_AMOUNT DEFAULT NULL

数据框B包含单独的表和列名称,如下所示:

  table name                       column name
ANALYSIS_SERVICES_CUBE_PROCESS    ACTIVE_FLAG
FACT_MONTHLY_ASSETS               UPDATE_DATE
RSVP_COMMISSION_HIST              SPLIT_CREDIT_AMOUNT
RSVP_COMMISSION_HIST              CREDIT_AMOUNT

我尝试使用Fuzzyjoin连接两个数据帧,但是由于某些列名太相似,我得到了重复。

这是我尝试的代码:

alter_table <- fuzzy_inner_join (
  dataframeA,
  dataframeB,
  by = c(
     "alter_table_sql_statement" = "column_name",
    "alter_table_sql_statement" = "table_name"
  ),
  match_fun = str_detect
)

这是它给的结果:

1. ALTER TABLE RSVP_COMMISSION_HIST MODIFY CREDIT_AMOUNT 
RSVP_COMMISSION_HIST 
CREDIT_AMOUNT

2. ALTER TABLE RSVP_COMMISSION_HIST MODIFY SPLIT_CREDIT_AMOUNT 
RSVP_COMMISSION_HIST
CREDIT_AMOUNT

3. ALTER TABLE RSVP_COMMISSION_HIST MODIFY SPLIT_CREDIT_AMOUNT 
RSVP_COMMISSION_HIST
SPLIT_CREDIT_AMOUNT

如您所见,数字2和3是相同的SQL语句,但是输出生成了两行,其中一行具有credit_amount,另一行具有split_credit_amount,即使该语句仅修改了“ split_credit_amount”列。如何解决此问题?我需要进行部分匹配,但同时要进行精确的部分匹配。

0 个答案:

没有答案