首页 > 解决方案 > 如何完全加入具有正确数据类型的 2 个数据帧?

问题描述

head(a)
  ID   yr mth
1  1 2021 M04
2  2 2021 M04
3  3 2021 M04
4  4 2021 M04
5  5 2021 M04
6  6 2021 M04

head(b)
    yr mth period_start period_end
1 2015 M03   2015-03-01 2015-03-31
2 2015 M03   2015-03-01 2015-03-31
3 2015 M04   2015-04-01 2015-04-30
4 2015 M04   2015-04-01 2015-04-30
5 2015 M05   2015-05-01 2015-05-30
6 2015 M05   2015-05-01 2015-05-30

我希望结果如下所示,完全连接 b,并且在“1900-01-01”中缺少 2 个日期字段中的一些记录/

  ID   yr mth period_start period_end
1  1 2019 M04   2015-03-01 2015-03-31
2  2 2018 M01   2015-03-01 2015-03-31
3  3 2021 M01   2015-04-01 2015-04-30
4  4 2015 M04         ????       ????
5  5 2021 M03   2015-04-01 2015-04-30   
6  6 2021 M04   2015-04-01 2015-04-30

请告知如何制作。谢谢

标签: rleft-join

解决方案


由于声誉问题,我无法就澄清问题发表评论。但是,我会dplyr在 r 中使用,我们有一个“传统的”左连接。这将保留第一个数据帧 (a) 中的所有行,并为 (b) 中没有匹配的两个新列生成缺失。只有您要合并的列的类需要相同,其余的可以稍后转换。如果以下产生错误,您可以分享它,我们可以从那里开始。

library(dplyr)
df <- left_join(a, b, by = c("yr", "mth"))

如果您想处理日期,我推荐使用lubridater 中的包,这使得转换日期和日期变得非常容易。


推荐阅读