r - 将每个日期具有一个值的数据框与每个日期具有多个条目的数据框结合起来
问题描述
我想合并两个数据框。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)
解决方案
我强烈建议使用 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 库的一部分)。
推荐阅读
- node.js - 如何在 Centos8 上运行 NodeJS 和 Apache 以及 Apache 虚拟主机文件?
- node.js - 从 Git Repo 在 Jenkins 中运行 Postman 集合
- ios - 在某个日期到期时收到推送通知
- angular - Firestore 参考
- tensorflow - 为什么训练和加载模型给出不同的评估结果?82% 对 5%
- python - Anaconda 提示给出错误 [Errno 9] Bad file descriptor
- rust - 如何解析 Vec
在 Rust 中作为 XML 的单独行? - android - 如何制作一个可以在用户单击时输入但被禁用的文本字段?
- css - 如何在 CSS 网格中将项目居中
- node.js - 如何从 React Express 节点组件调用外部 URL?