Найдите лучшее совпадение строк между двумя таблицами в r - PullRequest
0 голосов
/ 03 августа 2020

У меня есть два фрейма данных: df_1 и df_2. Для каждого ключа в df_1 я хочу найти лучший Form_2, который соответствует Form_1 в df_2.

IF

  1. Form_1 существует в df_2, а затем взять точное совпадение - For Например, ключ = B, Форма_1 = планшет, Форма_2 = планшет

  2. В противном случае выберите совпадение наименьшей длины - например, ключ = D, Форма_1 = патч, ER и Form_2 = патч. Это самая короткая длина слова, соответствующая патчу, ER.

  3. , если у Form_1 больше двух совпадений, используйте оба. Например, key = G имеет два совпадения в df_2 Form_2

  4. Наконец, если совпадений нет, по умолчанию используется NA.

    df_2=data.frame(Form_2=c("suspension","for suspension","tablet","tablet,tablet","patch","patch,IR","tablet,ER","Injection","Injection,Solution","liquid"))
    
    
    df_1=data.frame(
      key=c("A","B","C","D","E","F","G","H"),
      Form_1=c("suspension","tablet","tablet,ER","patch,ER","tablet","Injection,Solution","liquid Injection",'see attachment'))

И вот как должен выглядеть мой результат:

df_out=data.frame(
  key=c("A","B","C","D","E","F","G","G","H"),
  Form_1=c("suspension","tablet","tablet,ER","patch,ER","tablet","Injection,Solution","liquid Injection","liquid Injection",'see attachment'),
  Form_2=c("suspension","tablet","tablet,ER","patch","tablet","Injection,Solution","Liquid","Injection",NA)
)
...