Набор данных левого соединения с частичным совпадением строк [R] - PullRequest
1 голос
/ 08 февраля 2020

Я хотел бы спросить, как выполнить операцию по левому соединению с 2 наборами данных, когда переменная к соединению имеет различную строку.

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

Я предоставил 2 набора данных в ЗДЕСЬ .

Вот несколько строк из каждого набора данных.

all_data

   GID_0 NAME_0   GID_1               NAME_1 NL_NAME_1      GID_2    provstate    VARNAME_2 NL_NAME_2      TYPE_2  ENGTYPE_2 CC_2
1    FRA France FRA.1_1 Auvergne-Rhône-Alpes      <NA>  FRA.1.1_1          Ain         <NA>      <NA> Département Department   01
2    FRA France FRA.1_1 Auvergne-Rhône-Alpes      <NA>  FRA.1.2_1       Allier Basses-Alpes      <NA> Département Department   03
3    FRA France FRA.1_1 Auvergne-Rhône-Alpes      <NA>  FRA.1.3_1      Ardèche         <NA>      <NA> Département Department   07
4    FRA France FRA.1_1 Auvergne-Rhône-Alpes      <NA>  FRA.1.4_1       Cantal         <NA>      <NA> Département Department   15
5    FRA France FRA.1_1 Auvergne-Rhône-Alpes      <NA>  FRA.1.5_1        Drôme         <NA>      <NA> Département Department   26
6    FRA France FRA.1_1 Auvergne-Rhône-Alpes      <NA>  FRA.1.6_1  Haute-Loire         <NA>      <NA> Département Department   43
7    FRA France FRA.1_1 Auvergne-Rhône-Alpes      <NA>  FRA.1.7_1 Haute-Savoie         <NA>      <NA> Département Department   74
8    FRA France FRA.1_1 Auvergne-Rhône-Alpes      <NA>  FRA.1.8_1        Isère         <NA>      <NA> Département Department   38
9    FRA France FRA.1_1 Auvergne-Rhône-Alpes      <NA>  FRA.1.9_1        Loire         <NA>      <NA> Département Department   42
10   FRA France FRA.1_1 Auvergne-Rhône-Alpes      <NA> FRA.1.10_1  Puy-de-Dôme         <NA>      <NA> Département Department   63

data_to_insert

   provstate               count
   <chr>                   <int>
 1 Alpes-Maritimes            13
 2 Alsace                     13
 3 Aquitaine                 119
 4 Aude                        1
 5 Auvergne                    1
 6 Auvergne-Rhone-Alpes       10
 7 Bas-Rhin                    5
 8 Bouches-du-Rhone            9
 9 Bourgogne-Franche-Comte     6
10 Brittany                   23

Мне нужно подключить наборы данных, которые в кадре данных с именем all_data будут содержать новую переменную с именем count , найденный в data_to_insert dataframe - соединение должно основываться на переменной provstate . (если у вас нет значений в data_to_insert в новом информационном кадре слева должно быть значение 0)

Однако имена в обоих наборах данных немного различаются.

Я хотел бы попросить любой совет

1 Ответ

2 голосов
/ 08 февраля 2020

Насколько я проверил, мне кажется, что вы хотите изменить некоторые буквы, такие как è, ô и é. В all_data у вас есть эти буквы в названиях городов. Но у вас нет названий городов с этими буквами в data_to_insert (например, Кот-д'Армор против Кот-д'Армор). Поэтому я решил заменить эти буквы с акцентами на обычные алфавиты. Это поможет вашему процессу присоединения в некоторой степени. (Или этого может быть достаточно для вас.)

library(dplyr)
library(stringi)

mutate(all_data, provstate = stri_trans_general(provstate, "latin-ascii")) -> all_data

left_join(all_data, data_to_insert, by = "provstate")
...