首页 > 解决方案 > 一个接一个地合并两个时间数据帧

问题描述

我想要做的是将两个数据框与数据对不同变量的观察合并。

第一个数据框包含 2019 年 1 月至 2020 年 1 月期间的观察结果 第二个数据框包含 2020 年 1 月至 2020 年 12 月期间的观察结果。即,2020 年 1 月的观察结果出现在两个数据框中。在下面的示例中,最后一个观察值中dataframe 1的两个与 中的两个第一个观察值相同dataframe 2

      dataframe 1
Date         V1    V2
2019-01-01    x     y
2019-01-03    x     z
2020-01-01    x     y
2020-01-02    v     x


     dataframe 2 
 Date         V1    V2
2020-01-01    x     y
2020-01-02    v     x
2020-01-03    v     x
2020-01-04    n     j
2020-01-06    b     h

在这两个数据框中,我想创建一个从 2019 年 1 月到 2020 年 12 月的数据框。即,dataframe 1dataframe 2.

但是,目标是以某种方式合并两个数据帧,如果有任何相同的观察结果,那么这两个数据帧中只有一个观察结果将保留在新的数据帧中。而如果只有一个原始数据帧中存在观察结果,它将保留在新数据帧中。换句话说,我想避免重复但保留独特的观察结果。我认为它被称为完全加入。新的应该是这样的

     NewDataFRAME
2019-01-01    x     y
2019-01-03    x     z
2020-01-01    x     y
2020-01-02    v     x
2020-01-03    v     x
2020-01-04    n     j
2020-01-06    b     h

两个原始数据框中的观察结果在新数据框中仅出现一次。

如果您想随意解释,我不熟悉正确的术语。

标签: rdataframedatemerge

解决方案


我们可以使用rbind将数据集绑定在一起并应用unique在它上面

unique(rbind(df1, df2))
#         Date V1 V2
#1 2019-01-01  x  y
#2 2019-01-03  x  z
#3 2020-01-01  x  y
#4 2020-01-02  v  x
#7 2020-01-03  v  x
#8 2020-01-04  n  j
#9 2020-01-06  b  h

数据

df1 <- structure(list(Date = c("2019-01-01", "2019-01-03", "2020-01-01", 
"2020-01-02"), V1 = c("x", "x", "x", "v"), V2 = c("y", "z", "y", 
"x")), class = "data.frame", row.names = c(NA, -4L))

df2 <- structure(list(Date = c("2020-01-01", "2020-01-02", "2020-01-03", 
"2020-01-04", "2020-01-06"), V1 = c("x", "v", "v", "n", "b"), 
    V2 = c("y", "x", "x", "j", "h")), class = "data.frame", row.names = c(NA, 
-5L))

推荐阅读