首页 > 解决方案 > 将每个日期具有一个值的数据框与每个日期具有多个条目的数据框结合起来

问题描述

我想合并两个数据框。DF2 每天有一个温度值,而 DF1 每天有几个条目。所以我想在 DF2 中查找一天的温度,并将其添加到数据框 1 中这一天的每个条目中。

我想循环效果最好,但对 RI 来说很新,无法弄清楚它的外观

DF1$Date<-c(1.8.18, 1.8.18, 2.8.18)
DF2$Date<-c(1.8.18, 2.8.18, 3.8.18)
DF2$Temperature<-c(17,18,17)
DF2$Difference<-c(0.5,0.4,0.5)

这是预期的输出:

DF1$Date<-c(1.8.18, 1.8.18, 2.8.18)
DF1$Temperature<-c(17,17,18)
DF1$Difference<-c(0.5,0.5,0.4)

标签: rdatedataframe

解决方案


我强烈建议使用 tidyverse 库进行一般数据处理(并使用 lubridate 进行日期操作,尽管您不一定需要 lubridate 来解决这个问题)。

这可能适用于您的情况:

library(tidyverse)

# Create the dataframes
DF1 <- data.frame(c("1.8.18", "1.8.18", "2.8.18"))
DF2 <- data.frame(c("1.8.18", "2.8.18", "3.8.18"),
                  c(17,18,17),
                  c(0.5,0.4,0.5)
                  )
names(DF1) <- "Date"
names(DF2) <- c("Date", "Temperature", "Difference")

#### OUTPUT ####
> DF1
#    Date
# 1 1.8.18
# 2 1.8.18
# 3 2.8.18

> DF2
#     Date Temperature Difference
# 1 1.8.18          17        0.5
# 2 2.8.18          18        0.4
# 3 3.8.18          17        0.5

所以上面我只是重新创建了你的数据框。DF1 只有一列,DF2 有 3 列。

# join dataframes by what the "Date" columns have in common

left_join(x = DF1, y = DF2, by = "Date")

这应该会得到您的预期输出。

> DF3
#     Date Temperature Difference
# 1 1.8.18          17        0.5
# 2 1.8.18          17        0.5
# 3 2.8.18          18        0.4

有关更多详细信息,请查看 dplyr 中的join 函数(它是 tidyverse 库的一部分)。


推荐阅读