Как управлять определенными c наблюдениями в таблице, чтобы наблюдения были согласованными при объединении таблиц с помощью semi_join - PullRequest
1 голос
/ 08 мая 2020

Я хочу объединить две таблицы, используя semi_join, потому что таблица 2 (all_drafts_adj) формирует основу для фильтрации таблицы 1 (draft_all_stats).

draft_all_stats <- all_stats %>%
  semi_join(all_drafts_adj, by = "Player") %>%
  drop_na()

Я заметил некоторые расхождения в количестве наблюдения, которые не соответствуют количеству наблюдений в таблице 2 (all_drafts_adj). Различия были связаны с указанием c «Игрок» был указан в таблице 2 по сравнению с таблицей 1 (например, в таблице 2 «Игрок» был указан как «Деннис Смит», а тот же игрок в таблице 1 был указан как «Деннис Смит»). Jr ".

Я пробовал использовать следующий сценарий R, но он заменил все имена игроков вместо указанных c наблюдения:

all_stats$Player <- str_remove("Dennis Smith Jr", "Jr") 

Большинство скриптов преобразования / изменения в основном нацелены на целые столбцы или целые наблюдения Любой, какой сценарий R использовать для изменения определенных c наблюдений с таблицей данных?

1 Ответ

1 голос
/ 09 мая 2020

Если элементы должны быть сопоставлены через частичное сопоставление, тогда один вариант: regex_semi_join из fuzzyjoin

library(fuzzyjoin)
draft_all_stats <- all_stats %>%
     regex_semi_join(all_drafts_adj, by = "Player") %>%
     drop_na()

Или с дистанционным подходом с stringdist

draft_all_stats <- all_stats %>%
     stringdist_semi_join(all_drafts_adj, by = "Player") %>%
     drop_na()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...