通过匹配日期合并不同长度的数据帧
Merging dataframes of different length by matching dates
我有两个不同长度的数据帧(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
我尝试使用合并(如下),但它没有用,因为列长度不同。
DF_New<- merge(df1,df2, by.x = df1$date_time, by.y = df2$date_time)
我也尝试使用 rbind.fill(如下),但它用 .
替换了 df2 的所有值
DF_New <- rbind.fill(df1,df2)
有什么建议吗?
你几乎是正确的。您需要做的就是在您的函数中再添加一个参数,如下例所示:
DF_New<- merge(df1,df2, by.x = df1$date_time, by.y = df2$date_time, all=TRUE)
使用 dplyr
包并尝试 left_join()
。 returns 来自 df1
的所有行和来自 df1
和 df2
的所有列。 df1
中没有匹配项的任何行将收到 NA
.
library(dplyr)
left_join(df1, df2, by = "date_time")
查看您可以使用 ?join
的其他类型的联接。
我有两个不同长度的数据帧(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
我尝试使用合并(如下),但它没有用,因为列长度不同。
DF_New<- merge(df1,df2, by.x = df1$date_time, by.y = df2$date_time)
我也尝试使用 rbind.fill(如下),但它用 .
替换了 df2 的所有值DF_New <- rbind.fill(df1,df2)
有什么建议吗?
你几乎是正确的。您需要做的就是在您的函数中再添加一个参数,如下例所示:
DF_New<- merge(df1,df2, by.x = df1$date_time, by.y = df2$date_time, all=TRUE)
使用 dplyr
包并尝试 left_join()
。 returns 来自 df1
的所有行和来自 df1
和 df2
的所有列。 df1
中没有匹配项的任何行将收到 NA
.
library(dplyr)
left_join(df1, df2, by = "date_time")
查看您可以使用 ?join
的其他类型的联接。