首页 文章

通过匹配日期合并不同长度的数据帧

提问于
浏览
0

我有两个不同长度的数据帧(n = 3012和3008),我需要根据日期合并 . 我尝试过使用merge和rbindfill函数但没有成功 . 两个数据帧之间的共同线程是date_time,但是df2都没有与df1相同的所有值 .

DF1

ID date_time Q_cfs Data_Code
68 2016-11-01 00:00:00   353         P
69 2016-11-01 00:15:00   356         P
70 2016-11-01 00:30:00   357         P
71 2016-11-01 00:45:00   356         P
72 2016-11-01 01:00:00   358         P
73 2016-11-01 01:15:00   355         P

DF2

ID  stage           date_time
1  4.82 2016-11-01 00:00:00
2  4.83 2016-11-01 00:15:00
3  4.84 2016-11-01 00:30:00
4  4.85 2016-11-01 00:45:00
5  4.86 2016-11-01 01:00:00
6  4.87 2016-11-01 01:15:00

我尝试使用merge(下面),但由于列长度不同,它不起作用 .

DF_New<- merge(df1,df2, by.x = df1$date_time, by.y = df2$date_time)

我也尝试过使用rbind.fill(下面),但它用df2替换了所有的值 .

DF_New <- rbind.fill(df1,df2)

有什么建议?

2 回答

  • 2

    使用 dplyr 包并尝试 left_join() . 这将返回 df1 中的所有行以及 df1df2 中的所有列 . df1 中没有匹配的任何行都将收到 NA .

    library(dplyr)
    left_join(df1, df2, by = "date_time")
    

    查看您可以使用 ?join 进行的其他类型的联接 .

  • 0

    你几乎是正确的 . 您需要做的就是在函数中再添加一个参数,如下例所示:

    DF_New<- merge(df1,df2, by.x = df1$date_time, by.y = df2$date_time, all=TRUE)
    

相关问题