Кластеризация похожих строк в большом наборе данных - PullRequest
0 голосов
/ 03 апреля 2020

Мои данные похожи на следующие

             comp_name                                            perm_id
        GM Global Technologies Operations LLC                      16002
        GM Global Technologies Operations, Inc.                     NA
 International Business Machines Corporation (IBM)                 87001
 International Business Machines Corp (IBM)                         NA

В сумме у меня могут быть похожие строки comp_name, хотя одна (или более) из них имеет пропущенные perm_id с. Я хочу заполнить эти NAs, используя строки с заполненными perm_id с. Пожалуйста, обратите внимание, что размер данных превышает 400 тыс. Строк.

1 Ответ

1 голос
/ 03 апреля 2020

Я думаю, что это зависит от фактической структуры данных. В вашем примере первая часть строки одинакова для каждой компании. Таким образом, вы можете создавать группы в соответствии с первой частью строки. Но это не работает, если какая-то часть в середине или в начале отличается. В любом случае, как и в вашем примере, приведенный ниже код работает:

library(tidyverse)
    d <- data.frame(
      comp_name = c("GM Global Technologies Operations LLC",
                    "GM Global Technologies Operations, Inc.",
                    "International Business Machines Corporation (IBM)",
                    "International Business Machines Corp (IBM)"),
      value = c(1, NA, 2, NA))
    d %>% 
      mutate(comparison = substr(comp_name, 1, 20)) %>% 
      arrange(comp_name) %>% 
      group_by(comparison) %>% 
      mutate(new_value = max(value, na.rm = TRUE))
    #> # A tibble: 4 x 4
    #> # Groups:   comparison [2]
    #>   comp_name                               value comparison        new_value
    #>   <fct>                                   <dbl> <chr>                 <dbl>
    #> 1 GM Global Technologies Operations LLC       1 GM Global Techno…         1
    #> 2 GM Global Technologies Operations, Inc.    NA GM Global Techno…         1
    #> 3 International Business Machines Corp (…    NA International Bu…         2
    #> 4 International Business Machines Corpor…     2 International Bu…         2

Создано в 2020-04-03 пакетом Представить (v0.3.0)

...