Как объединить кадры данных в R?

Опубликовано: 13 Сентября, 2022

В этой статье мы обсудим, как выполнять внутренние, внешние, левые или правые соединения в данном фрейме данных на языке программирования R.

Используемые функции

Функция merge() используется для слияния или объединения двух таблиц. Указав соответствующие значения для конкретных параметров, мы можем создать желаемое соединение.

Syntax: merge(df1, df2, by.df1, by.df2, all.df1, all.df2, sort = TRUE)

Parameters:

df1: one dataframe
df2: another dataframe
by.df1, by.df2: The names of the columns that are common to both df1 and df2.
all, all.df1, all.df2: Logical values that actually specify the type of merging happens.

Внутреннее соединение

Внутреннее соединение, также известное как естественное соединение, объединяет два фрейма данных в один, который содержит общие элементы обоих. Для этой функции слияния () просто даются значения двух рассматриваемых фреймов данных, и на основе общего столбца генерируется фрейм данных.

Синтаксис :

merge(x = dataframe 1, y = data frame 2)

Пример

R




# create data frame 1 with id ,
# name and address 
df1=data.frame(id=c(7058,7059,7072,7075), 
               name=c("bobby","pinkey","harsha","deepika"),
               address=c("kakumanu","hyd","tenali","chebrolu"))
  
# create data frame 2 with id , 
# marks  
df2=data.frame(id=c(7058,7059,7072,7075,7062,7063), 
               marks=c(90,78,98,67,89,90))
  
# display dataframe1
print(df1)
  
# display dataframe2
print(df2)
  
print("Inner join")
  
# inner join 
print(merge(x = df1, y = df2))

Выход:

Внешнее соединение

Outer Join объединяет все столбцы обоих фреймов данных в один для всех элементов. Для этого рассматриваемые кадры данных вместе со всеми параметрами, которым присвоено значение TRUE, должны быть переданы в функцию merge().

Синтаксис :

merge(x = data frame 1, y = data frame 2, all = TRUE)

Пример:

R




# create data frame 1 with id , name and address 
df1=data.frame(id=c(7058,7059,7072,7075), 
               name=c("bobby","pinkey","harsha","deepika"),
               address=c("kakumanu","hyd","tenali","chebrolu"))
  
# create data frame 2 with id , marks  
df2=data.frame(id=c(7058,7059,7072,7075,7062,7063), 
               marks=c(90,78,98,67,89,90))
  
# display dataframe1
print(df1)
  
# display dataframe2
print(df2)
  
print("Inner join")
  
# outer join 
print(merge(x = df1, y = df2,all=TRUE))

Выход:

Примечание. Возвращает NA несовпадающих столбцов.

Левое соединение

Он дает данные, которые соответствуют всем строкам в первом фрейме данных с соответствующими значениями во втором фрейме данных. Для этого, наряду с рассматриваемыми кадрами данных, все параметры должны быть переданы TRUE после указания ссылки на левую таблицу.

Синтаксис :

merge(x = data frame 1, y = data frame 2, all.x = TRUE)

Пример:

R




# create data frame 1 with id , name and address 
df1=data.frame(id=c(7058,7059,7072,7075), 
               name=c("bobby","pinkey","harsha","deepika"),
               address=c("kakumanu","hyd","tenali","chebrolu"))
  
# create data frame 2 with id , marks  
df2=data.frame(id=c(7058,7059,7072,7075,7062,7063), 
               marks=c(90,78,98,67,89,90))
  
# display dataframe1
print(df1)
  
# display dataframe2
print(df2)
  
print("Left join")
# Left join 
print(merge(x = df1, y = df2,all.x=TRUE))

Выход:

Право присоединиться

Он дает данные, которые соответствуют всем строкам во втором фрейме данных с соответствующими значениями в первом фрейме данных. Для этой функции слияния () должны быть предоставлены кадры данных вместе со всеми параметрами, присвоенными TRUE. все параметры должны иметь ссылку на правильный фрейм данных.

Синтаксис :

merge(x = data frame 1, y = data frame 2, all.y = TRUE)

Пример:

R




# create data frame 1 with id , name and address 
df1=data.frame(id=c(7058,7059,7072,7075), 
               name=c("bobby","pinkey","harsha","deepika"),
               address=c("kakumanu","hyd","tenali","chebrolu"))
  
# create data frame 2 with id , marks  
df2=data.frame(id=c(7058,7059,7072,7075,7062,7063), 
               marks=c(90,78,98,67,89,90))
  
# display dataframe1
print(df1)
  
# display dataframe2
print(df2)
  
print("Right  join")
# Right  join 
print(merge(x = df1, y = df2,all.y=TRUE))

Выход: