R语言 数据框连接

R语言 数据框连接

在R语言中,数据框是通用的数据对象,用于存储表格数据。数据框被认为是R编程中最流行的数据对象,因为以表格的形式分析数据会更舒服。数据框架也可以被教导为床垫,矩阵的每一列都可以是不同的数据类型。数据框架是由三个主要部分组成的,即数据、行和列。在R语言中,我们使用 merge() 函数来合并两个数据框架。这个函数存在于 dplyr 包的 join() 函数中。合并两个数据框架最重要的条件是列的类型应该是相同的,在此基础上进行合并。 merge() 函数的工作原理类似于DBMS中的join。R中可用的合并类型有。

  1. 自然连接或内部连接
  2. 左外联接
  3. 右外联接
  4. 全外联接
  5. 交叉连接
  6. 半联接
  7. 反联接

R中 merge() 函数的基本语法。

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

参数:

df1: 一个数据框架

df2: 另一个数据框架

by.df1, by.df2: df1和df2共有的列的名称。

现在让我们试着逐一了解所有的合并类型。首先,我们将创建两个数据框,这将有助于我们轻松地理解每个连接。

# 数据框1

df1 = data.frame(StudentId = c(101:106),
                 Product = c("Hindi", "English",
                             "Maths", "Science",
                             "Political Science",
                             "Physics"))
df1
R

输出

    StudentId          Product
1       101             Hindi
2       102           English
3       103             Maths
4       104           Science
5       105 Political Science
6       106           Physics
R

# 数据框2

df2 = data.frame(StudentId = c(102, 104, 106,
                               107, 108),
                 State = c("Mangalore", "Mysore",
                           "Pune", "Dehradun", "Delhi"))
df2
R

输出

   StudentId   State
1       102 Mangalore
2       104   Mysore
3       106     Pune
4       107 Dehradun
5       108    Delhi
R

自然连接或内部连接

内联接是用来只保留那些从数据框架中匹配的行,在这里,我们实际上指定了参数 all = FALSE。 如果我们尝试用集合理论来理解这一点,那么我们可以说这里我们实际上是在进行交集操作。比如说。

A = [1, 2, 3, 4, 5]
B = [2, 3, 5, 6]
Then the output of natural join will be (2, 3, 5)
R

这是R语言中最简单和最常见的连接类型。现在让我们试着用R语言程序来理解它。

例子

# R program to illustrate
# Joining of dataframes
 
df = merge(x = df1, y = df2, by = "StudentId")
df
R

输出

   StudentId Product    State
1       102 English Mangalore
2       104 Science   Mysore
3       106 Physics     Pune
R

左外联接

左外联接基本上是包括你的数据框架x中的所有行和y中的那些匹配的行,在这里,我们实际上指定参数 x = TRUE。 如果我们尝试用基本的集合理论来理解这一点,那么我们可以说在这里我们实际上是在显示完整的集合x。现在让我们尝试用R程序来理解这个。

例子

# R program to illustrate
# Joining of dataframes
 
df = merge(x = df1, y = df2, by = "StudentId",
                                 all.x = TRUE)
df
R

输出

  StudentId           Product    State
1       101             Hindi     NA
2       102           English   Mangalore
3       103             Maths     NA
4       104           Science   Mysore
5       105 Political Science     NA
6       106           Physics     Pune
R

右外联接

右外联接基本上是包括你的数据框架y中的所有行,并且只包括x中那些匹配的行,在这里,我们实际上指定了参数 y = TRUE。 如果我们尝试用基本的集合理论来理解这一点,那么我们可以说在这里我们实际上是在显示一个完整的集合y。现在让我们尝试用R程序来理解这一点:

例子

# R program to illustrate
# Joining of dataframes
 
df = merge(x = df1, y = df2, by = "StudentId",
                                 all.y = TRUE)
df
R

输出

  StudentId Product    State
1       102 English Mangalore
2       104 Science   Mysore
3       106 Physics     Pune
4       107    NA    Dehradun
5       108    NA    Delhi
R

完全外联

外联基本上是用来保留两个数据框架的所有记录,在这里,我们实际上指定了参数 all = TRUE。 如果我们尝试用基本的集合理论来理解这一点,那么我们可以说这里我们实际上是在执行联合选项。现在让我们试着用R程序来理解这个问题。

例子

# R program to illustrate
# Joining of dataframes
 
df = merge(x = df1, y = df2, by = "StudentId",
                                   all = TRUE)
df
R

输出

   StudentId           Product    State
1       101             Hindi     NA
2       102           English   Mangalore
3       103             Maths     NA
4       104           Science   Mysore
5       105 Political Science     NA
6       106           Physics     Pune
7       107              NA     Dehradun
8       108              NA     Delhi
R

交叉连接

交叉连接也被称为笛卡尔连接,其结果是一个数据框架的每一行都被连接到另一个数据框架的每一行。在集合理论中,这种类型的连接被称为两个集合之间的笛卡尔积。现在让我们试着用R程序来理解这一点。

例子

# R program to illustrate
# Joining of dataframes
 
df = merge(x = df1, y = df2, by = NULL)
df
R

输出

StudentId.x           Product StudentId.y    State
1          101             Hindi         102 Mangalore
2          102           English         102 Mangalore
3          103             Maths         102 Mangalore
4          104           Science         102 Mangalore
5          105 Political Science         102 Mangalore
6          106           Physics         102 Mangalore
7          101             Hindi         104   Mysore
8          102           English         104   Mysore
9          103             Maths         104   Mysore
10         104           Science         104   Mysore
11         105 Political Science         104   Mysore
12         106           Physics         104   Mysore
13         101             Hindi         106     Pune
14         102           English         106     Pune
15         103             Maths         106     Pune
16         104           Science         106     Pune
17         105 Political Science         106     Pune
18         106           Physics         106     Pune
19         101             Hindi         107 Dehradun
20         102           English         107 Dehradun
21         103             Maths         107 Dehradun
22         104           Science         107 Dehradun
23         105 Political Science         107 Dehradun
24         106           Physics         107 Dehradun
25         101             Hindi         108    Delhi
26         102           English         108    Delhi
27         103             Maths         108    Delhi
28         104           Science         108    Delhi
29         105 Political Science         108    Delhi
30         106           Physics         108    Delhi
R

半连接

这种连接有点像内部连接,只有左边的数据框架列和值被选中。现在让我们试着用R程序来理解这个。

例子

# R program to illustrate
# Joining of dataframes
 
# Import required library
library(dplyr)
 
df = df1 %>% semi_join(df2, by = "StudentId")
df
R

输出

  StudentId Product
1       102 English
2       104 Science
3       106 Physics
R

反联接

在集合理论方面,我们可以把反连接说成是集合的差异操作,例如,A = (1, 2, 3, 4) B = (2, 3, 5) 那么A-B的输出将是集合(1, 4)。这个连接有点像df1-df2,因为它基本上是从df1中选择所有实际上不存在于df2中的行。现在让我们试着用R程序来理解这个问题。

例子

# R program to illustrate
# Joining of dataframes
 
# Import required library
library(dplyr)
 
df = df1 %>% anti_join(df2, by = "StudentId")
df
R

输出

  StudentId           Product
1       101             Hindi
2       103             Maths
3       105 Political Science
R

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册