r - 将两个数据框与公共列连接在一起
问题描述
我有两个不同的数据框共享公共列,如下所示:
数据框 A
structure(list(Firm = c("Alex", NA, NA), Postal.Code = c("V0N 1B4",
"V0N 1B4", "V0N 1B4"), sold.month = c(NA_real_, NA_real_, NA_real_
), sold.year = c(NA_real_, NA_real_, NA_real_), sold.qtr = c(NA_real_,
NA_real_, NA_real_), List.year = c(2018, 2018, 2018), List.Date.Year.quarter = c("2018 Q2",
"2018 Q2", "2018 Q2")), row.names = c(NA, 3L), class = "data.frame")
Firm Postal.Code sold.month sold.year sold.qtr List.year List.Date.Year.quarter
1 Alex V0N 1B4 NA NA NA 2018 2018 Q2
2 <NA> V0N 1B4 NA NA NA 2018 2018 Q2
3 <NA> V0N 1B4 NA NA NA 2018 2018 Q2
数据框 B
structure(list(sold.month = c(NA, 1L, 1L), sold.year = c(NA,
2020L, 2020L), sold.qtr = c(NA, 1L, 1L), List.Date.Year.quarter = structure(c(2019.75,
2019.75, 2019.75), class = "yearqtr"), List.Date.Year.month = structure(c(2019.75,
2019.91666666667, 2019.91666666667), class = "yearmon"), Sold.Date.Year.month = structure(c(NA,
2020, 2020), class = "yearmon")), row.names = c(NA, 3L), class = "data.frame")
sold.month sold.year sold.qtr List.Date.Year.quarter List.Date.Year.month Sold.Date.Year.month
1 NA NA NA 2019 Q4 Oct 2019 <NA>
2 1 2020 1 2019 Q4 Dec 2019 Jan 2020
3 1 2020 1 2019 Q4 Dec 2019 Jan 2020
我想要做什么: 我只想加入数据框A中存在的数据框B的列。如果B中不存在数据框A的列,则该值应显示为NA。
预期的结果应该是:
Firm Postal.Code sold.month sold.year sold.qtr List.year List.Date.Year.quarter
1 Alex V0N 1B4 NA NA NA 2018 2018 Q2
2 <NA> V0N 1B4 NA NA NA 2018 2018 Q2
3 <NA> V0N 1B4 NA NA NA 2018 2018 Q2
4 NA NA NA NA NA NA 2019 Q4
5 NA NA 1 2020 1 NA 2019 Q4
6 NA NA 1 2020 1 NA 2019 Q4
解决方案
您可以将列的类型更改为字符,然后用于bind_rows
组合它们。
library(dplyr)
A %>%
mutate(across(.fns = as.character)) %>%
bind_rows(B %>%
select(intersect(names(.), names(A))) %>%
mutate(across(.fns = as.character))) %>%
type.convert(as.is = TRUE)
# Firm Postal.Code sold.month sold.year sold.qtr List.year List.Date.Year.quarter
#1 Alex V0N 1B4 NA NA NA 2018 2018 Q2
#2 <NA> V0N 1B4 NA NA NA 2018 2018 Q2
#3 <NA> V0N 1B4 NA NA NA 2018 2018 Q2
#4 <NA> <NA> NA NA NA NA 2019 Q4
#5 <NA> <NA> 1 2020 1 NA 2019 Q4
#6 <NA> <NA> 1 2020 1 NA 2019 Q4
推荐阅读
- xamarin - Xamarin 表单 Facebook 身份验证
- postgresql - Spring Data – 使用 CTE 的原生查询的分页
- c - TI Simplelink CC3200SF FreeRTOS HC-SR04 超声波传感器距离读取
- groovy - Swagger @Schema with Groovy:如何生成数组类型?
- r - 使用R中的嵌套for循环将多个绘图转换为pdf
- docker - 容器中的 CRON 作业
- node.js - 在遗留应用程序上使用 SSLv3 和节点
- android - 使用自定义 StateListDrawable 查看不呈现
- c++ - 将csv文件作为二维数组或向量读入c++,并对数组中的数字进行计算
- ios - 如何在 Swift 中使用 UITextField 从图像中提取特定文本?