Как объединить фреймы данных по именам строк в R


Вы можете использовать следующий базовый синтаксис для объединения двух фреймов данных в R на основе их имен строк:

#inner join
merge(df1, df2, by= 0 )

#left join
merge(df1, df2, by= 0 , all. x = TRUE )

#outer join
merge(df1, df2, by= 0 , all= TRUE )

Используя аргумент by=0 , мы можем сообщить R, что хотим выполнить слияние, используя имена строк фреймов данных.

В следующих примерах показано, как использовать каждый метод со следующими двумя фреймами данных:

#create first data frame
df1 <- data.frame(points=c(99, 90, 86, 88, 95),
 assists=c(33, 28, 31, 39, 34))

rownames(df1) <- c(1, 2, 3, 4, 5)

df1

 points assists
1 99 33
2 90 28
3 86 31
4 88 39
5 95 34

#create second data frame
df2 <- data.frame(rebounds=c(17, 15, 22, 26, 25),
 blocks=c(7, 7, 15, 12, 14))

rownames(df2) <- c(3, 4, 5, 6, 7)

df2

 rebounds blocks
3 17 7
4 15 7
5 22 15
6 26 12
7 25 14

Пример 1: выполнение внутреннего соединения с использованием имен строк

В следующем коде показано, как выполнить внутреннее соединение двух фреймов данных с использованием имен строк:

#perform inner join using row names
merge(df1, df2, by= 0 )

 Row.names points assists rebounds blocks
1 3 86 31 17 7
2 4 88 39 15 7
3 5 95 34 22 15

Обратите внимание, что только те строки, имена которых принадлежат обоим фреймам данных, сохраняются в окончательном объединенном фрейме данных.

Пример 2. Выполнение левого соединения с использованием имен строк

В следующем коде показано, как выполнить левое соединение двух фреймов данных, используя имена строк:

#perform left join using row names
merge(df1, df2, by= 0 , all. x = TRUE )

 Row.names points assists rebounds blocks
1 1 99 33 NA NA
2 2 90 28 NA NA
3 3 86 31 17 7
4 4 88 39 15 7
5 5 95 34 22 15

Обратите внимание, что все строки из первого фрейма данных сохраняются в окончательном объединенном фрейме данных.

Пример 3. Выполнение внешнего соединения с использованием имен строк

В следующем коде показано, как выполнить внешнее соединение двух фреймов данных с использованием имен строк:

#perform outer join using row names
merge(df1, df2, by= 0 , all= TRUE )

 Row.names points assists rebounds blocks
1 1 99 33 NA NA
2 2 90 28 NA NA
3 3 86 31 17 7
4 4 88 39 15 7
5 5 95 34 22 15
6 6 NA NA 26 12
7 7 NA NA 25 14

Обратите внимание, что все строки из обоих фреймов данных сохраняются в окончательном объединенном фрейме данных.

Дополнительные ресурсы

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

Как сделать левое соединение в R
Как выполнить ВПР в R
Как добавить строки во фрейм данных в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.