迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

在 R 中合并具有不同行数的两个数据帧

作者:迹忆客 最近更新:2023/03/21 浏览次数:

本文将演示在 R 中合并具有不同行数的两个数据帧的多种方法。

使用 full_join 函数合并两个不同行数的 R 数据帧

full_joindplyr 包的一部分,它可用于合并具有不同行数的两个数据帧。该函数将要合并的数据帧作为前两个参数,并返回与第一个参数相同类型的对象。此函数可以对数据帧扩展类型(如 tibble 或惰性数据帧)进行操作。full_join 从两个数据框参数中提取所有行和列。当没有匹配的值时,它用 NA-s 填充元素。

library(dplyr)

v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)

df1 <- data.frame(v1, v2)

v1 <- c(9.1, 9.2, 9.3, 9.1, 9.2, 9.3, 9.3, 9.2, 9.1)
v2 <- c(101, 102, 103, 201, 202, 203, 204, 403, 404)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri", "Mon", "Tue", "Wed"))

df2 <- data.frame(v1, v2, wday)

dff <- df1 %>% full_join(df2)
dff
   v1  v2 wday
1  1.1  11 <NA>
2  1.2  12 <NA>
3  1.3  13 <NA>
4  2.1  21 <NA>
5  2.2  22 <NA>
6  2.3  23 <NA>
7  9.1 101  Wed
8  9.2 102  Thu
9  9.3 103  Mon
10 9.1 201  Wed
11 9.2 202  Thu
12 9.3 203  Fri
13 9.3 204  Mon
14 9.2 403  Tue
15 9.1 404  Wed

使用 left_join 函数合并两个不同行数的 R 数据帧

left_joindplyr 包中的另一种方法。它采用类似于 full_join 函数的参数,但 left_join 从第一个数据框中提取所有行,并从它们两个中提取所有列。

library(dplyr)

v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)

df1 <- data.frame(v1, v2)

v1 <- c(9.1, 9.2, 9.3, 9.1, 9.2, 9.3, 9.3, 9.2, 9.1)
v2 <- c(101, 102, 103, 201, 202, 203, 204, 403, 404)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri", "Mon", "Tue", "Wed"))

df2 <- data.frame(v1, v2, wday)

dfl <- df1 %>% left_join(df2)
dfl

输出:

  v1 v2 wday
1 1.1 11 <NA>
2 1.2 12 <NA>
3 1.3 13 <NA>
4 2.1 21 <NA>
5 2.2 22 <NA>
6 2.3 23 <NA>

使用 right_join 函数合并两个不同行数的 R 数据帧

right_join 的工作方式类似于 left_join 函数,除了从第二个数据帧参数而不是第一个参数中提取所有行。该函数还将两个数据框中的所有列复制到新构造的对象中。

library(dplyr)

v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)

df1 <- data.frame(v1, v2)

v1 <- c(9.1, 9.2, 9.3, 9.1, 9.2, 9.3, 9.3, 9.2, 9.1)
v2 <- c(101, 102, 103, 201, 202, 203, 204, 403, 404)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri", "Mon", "Tue", "Wed"))

df2 <- data.frame(v1, v2, wday)

dfr <- df1 %>% right_join(df2)
dfr

输出:

  v1  v2 wday
1 9.1 101  Wed
2 9.2 102  Thu
3 9.3 103  Mon
4 9.1 201  Wed
5 9.2 202  Thu
6 9.3 203  Fri
7 9.3 204  Mon
8 9.2 403  Tue
9 9.1 404  Wed

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

R 中具有多个条件的函数向量化

发布时间:2023/03/21 浏览次数:64 分类:编程语言

一项常见的数据分析任务是根据同一行的其他列使用一个或多个条件创建或更新数据框列。 如果我们尝试使用 if 语句来执行此操作,则只会使用第一行来测试条件,并且会根据该行更

在 R 中读取 xlsx 文件

发布时间:2023/03/21 浏览次数:66 分类:编程语言

在这篇文章中,你将会了解到两个在 R 中读取 xlsx 文件的最完整和最容易使用的库:readxl 和 openxlsx。

清理 R 的环境

发布时间:2023/03/21 浏览次数:178 分类:编程语言

在本教程中,你将学习如何在 R 中编写一个函数,在不需要重新启动 R 的情况下清除环境。

在 R 中注释掉多行

发布时间:2023/03/21 浏览次数:63 分类:编程语言

在本文中,你将学习如何在 R 中注释出多行,而不必在每一行的开头手动写一个#字符来注释。

在 R 中清除内存

发布时间:2023/03/21 浏览次数:197 分类:编程语言

在本教程中,你将学习如何清除 R 系统占用的内存,而不必重新启动它或重新启动它运行的计算机。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便