首页 > 解决方案 > 在R中合并两个具有不同日期格式的df

问题描述

我有两个数据框,想按日期合并它们。问题是,df1(我想保留的主要 df)每小时观察一次,df2 每天观察一次。我想合并它们,这样如果 df1 一天有多个观察值,我会从 df2 转移一些观察值两次。

示例df:

Time_df1 <- c(ymd_hms("2017-11-28T14:02:00"),
              ymd_hms("2017-11-28T18:00:00"),
              ymd_hms("2020-08-24T20:30:00"), 
              ymd_hms("2020-10-01T02:02:00"),
              ymd_hms("2021-03-12T23:05:00"))
Measurement_df1 <- c(0.1,0.2, 0.5, 0.8, 0.7)
df1 <- data.frame(Time_df1, Measurement_df1)

Time_df2 <- c(as_date(17498), as_date(18498), as_date(18698))
Measurement_df2 <- c(11, 42, 28)
df2 <- data.frame(Time_df2, Measurement_df2)

目标df:

Measurement_df2 <- c(11, 11, 42, NA, 28)
df_aim <- data.frame(Time_df1, Measurement_df1, Measurement_df2)

标签: rlubridate

解决方案


将时间变量转换为加入前的日期

df1 %>% 
  dplyr::mutate(Time_df1date = as.Date(Time_df1)) %>% 
  dplyr::left_join(df2, by = c("Time_df1date" = "Time_df2")) %>%
  dplyr::select(-Time_df1date)

推荐阅读