Сравните два data.frames, чтобы найти аналогичные значения из data.frame 1 в data.frame 2 - PullRequest
0 голосов
/ 11 марта 2020

У меня есть два data.frames: имя и поиск

name <- data.frame(
  A = c("example", "firstly", "second.com")


searches <- data.frame(
  A = c("example.com","secondly","first"),
  B = c("test", "test.com", "test1"))

Я хочу найти в data.frame «ищет» значения в data.frame «name». Если есть аналогичное значение (не совсем то же самое), я хочу, чтобы R возвращал значение из имени и из поисков в новой строке в новой таблице.

Таким образом, новый data.frame мог бы быть

result <- data.frame(
    A = "example", "firstly", "second.com",
    B = "example.com","first","secondly",
    C = "test", "test1", "test.com")

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

используйте функцию stringdist_join из пакета fuzzyjoin.

library(fuzzyjoin)

name <- data.frame(
  A = c("example", "firstly", "second.com")
)

searches <- data.frame(
  A = c("example.com","secondly","first"),
  B = c("test", "test.com", "test1")
)

result <- stringdist_join(name, searches, by = "A", max_dist = 5)

В результате:

> print(result)
         A.x         A.y        B
1    example example.com     test
2    firstly       first    test1
3 second.com    secondly test.com
0 голосов
/ 11 марта 2020

Вы можете использовать пакет stringr в R для этого. Например, если у вас есть

name <- data.frame(
  A = c("example", "firstly", "second.com"))


searches <- data.frame(
  A = c("example.com","secondly","first"),
  B = c("test", "test.com", "test1"))

, то вы можете использовать

str_extract(searches$A, '.*example.*')  

. Это дает выходной сигнал

> str_extract(searches$A, '.*example.*')  
[1] "example.com" NA            NA 

Если вы установите его с соответствующим для l oop для перебора элементов в вашем name кадре данных и ячейках вашего searches кадра данных, тогда вы можете выбрать все совпадения и извлечь их по своему усмотрению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...