нечеткое соединение со stringdist_join () в R, ошибка: недопустимые NA в подписанных назначениях - PullRequest
0 голосов
/ 02 ноября 2018

Прежде всего мне жаль, если у меня плохое форматирование, это мой первый пост (также плохо знакомый с программированием и R)

Я пытаюсь объединить два фрейма данных вместе на строковые переменные. Я объединяю названия университетов, которые могут не совпадать идеально, поэтому я надеялся объединить, используя нечеткую или приблизительную функцию сопоставления строк. Я был счастлив, когда нашел пакет «fuzzyjoin».

от CranR: stringdist_join: объединение двух таблиц на основе нечеткого сопоставления строк их столбцов

stringdist_join(x, y, by = NULL, max_dist = 2, method = c("osa", "lv",
  "dl", "hamming", "lcs", "qgram", "cosine", "jaccard", "jw","soundex"), mode = "inner", ignore_case = FALSE, distance_col = NULL, ...)

мой код:

stringdist_left_join(new, institutions, by = c("tm_9_undergradu" = "Institution.Name"))

Ошибка:

Error in dists[include] <- stringdist::stringdist(v1[include], v2[include],  : 
NAs are not allowed in subscripted assignments

Я знаю, что в этих столбцах есть некоторые АН, но я не уверен, как их можно удалить, так как они мне там тоже нужны. Я знаю, что другие функции объединения и слияния НС будут просто игнорироваться. Кто-нибудь знает способ обойти эту ошибку для этого пакета или сделать приблизительное соединение строк другим способом. Спасибо за помощь.

1 Ответ

0 голосов
/ 20 июня 2019

Этот ответ работал для меня и от GitHub

Шаг 1: выяснить, какой Df имеет NAs

`which(is.na(df1))
 which(is.na(df2))`

Шаг 2: замените NAs чем-то другим. df1[is.na(df1)] <- "empty_string"

Шаг 3: запустить объединение (код, с которым я работал, когда я получил ошибку)

`test1 <- msa_table %>%
   as_tibble() %>% 
   unlist() %>%
   mutate(msa = sub("\\(.*)","", as.character(msa)) %>% 
   stringdist_full_join(msa_table, df1, by = 'msa', max_dist = 2)` 

В результате я не обнаружил ту же ошибку, но все еще имел NAs в моих таблицах.

Надеюсь, это поможет! Также, чтобы быть ясным: это решение пришло от Антона Прокопьева '@prokopyev' на GitHub.

...