R语言 数据框连接

您所在的位置:网站首页 数据框R语言 R语言 数据框连接

R语言 数据框连接

2023-03-20 05:09| 来源: 网络整理| 查看: 265

R语言 数据框连接

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

自然连接或内部连接 左外联接 右外联接 全外联接 交叉连接 半联接 反联接

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

输出

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

# 数据框2

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

输出

StudentId State 1 102 Mangalore 2 104 Mysore 3 106 Pune 4 107 Dehradun 5 108 Delhi 自然连接或内部连接

内联接是用来只保留那些从数据框架中匹配的行,在这里,我们实际上指定了参数 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 program to illustrate # Joining of dataframes   df = merge(x = df1, y = df2, by = "StudentId") df

输出

StudentId Product State 1 102 English Mangalore 2 104 Science Mysore 3 106 Physics Pune 左外联接

左外联接基本上是包括你的数据框架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

输出

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 右外联接

右外联接基本上是包括你的数据框架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

输出

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

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

例子

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

输出

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 program to illustrate # Joining of dataframes   df = merge(x = df1, y = df2, by = NULL) df

输出

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 program to illustrate # Joining of dataframes   # Import required library library(dplyr)   df = df1 %>% semi_join(df2, by = "StudentId") df

输出

StudentId Product 1 102 English 2 104 Science 3 106 Physics 反联接

在集合理论方面,我们可以把反连接说成是集合的差异操作,例如,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

输出

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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3