Нечеткое логическое соединение с использованием двух столбцов

Я использую пакет r fuzzyjoin для объединения двух наборов данных. В настоящее время я присоединяюсь к одному столбцу и хотел бы присоединиться по двое.

  • первый набор данных имеет имя местоположения и столбец с именем config
  • второй набор данных имеет название местоположения и два трех атрибута
  • Я хотел бы объединить две колонки по названию и TM

Я попытался добавить имена столбцов, к которым хочу присоединиться, как вектор, но это, похоже, не работает. Я получаю сообщение об ошибке:

  • Ошибка: каждая переменная должна быть 1d атомарным вектором или списком. Переменные проблемы: кол.

    #This works to join on 1 column
    library(fuzzyjoin)
    stringdist_inner_join(Dataset1, Data2, by ="Name", distance_col = NULL)
    
    #Joiningontwocolumns
    stringdist_inner_join(Dataset1, Dataset2, by =c("Name","TM"), distance_col = NULL)
    

Набор данных 1:

 Name           Config     TM
 ALTO D         BB         T
 CONTRA         ST         D
 EIGHT A        DD         D
 OPALAS         BB         T
 SAUSALITO Y    AA         D
 SOLANO J       ST         D

Набор данных 2:

 Name       Age     Rank    TM
 ALTO D     50      2       T
 ALTO D     20      6       D
 CONTRA     10      10      D
 CONTRA     15      15      T
 EIGHTH     18      21      T
 OPAL       19      4       T
 SAUSALITO  2       12      D
 SOLANO     34      43      D

person steppermotor    schedule 05.06.2017    source источник
comment
попробуйте by =c("Name"="TM"). источник: примеры в ?fuzzyjoin::stringdist_inner_join   -  person Adam Spannbauer    schedule 05.06.2017
comment
Увидев пример в github, вам нужно будет написать следующее: by = c(Name = "TM")   -  person jazzurro    schedule 05.06.2017
comment
@jazzurro, спасибо, в какой-то степени сработало. Я бы сказал, что у пакета fuzzyjoin есть проблемы с несколькими объединениями.   -  person steppermotor    schedule 06.06.2017
comment
@steppermotor Понятно. Играю сейчас с пакетом. Думаю, тогда я увижу некоторые проблемы. Спасибо, что сказали мне это!   -  person jazzurro    schedule 07.06.2017


Ответы (1)


Мне потребовалось время, чтобы понять, но я считаю, что правильный синтаксис для объединения нескольких столбцов:

stringdist_inner_join(data1, data2, 
                      by = list(x = c("Name", "TM"), y = c("Name", "TM")), 
                      distance_col = NULL))
person Arthur Yip    schedule 18.03.2019
comment
(это когда столбцы нельзя называть одинаковыми ...) - person Arthur Yip; 06.01.2021