如何在R中将一个数据集的日期与另一数据集的日出日落时间合并
解决方案
提供两种可直接使用的实现思路:
思路1:基于已生成的全量df筛选匹配
仅需通过日期列匹配即可提取对应数据,示例代码如下:
# 加载dplyr包(如果未安装先运行install.packages("dplyr")) library(dplyr) # 先统一两个数据集的日期列为标准Date格式,避免格式不一致导致匹配失败 WSW$date <- as.Date(WSW$date) df$date <- as.Date(df$date) # 仅提取df中与WSW日期匹配的日出日落数据 target_sun_data <- df %>% filter(date %in% WSW$date) # 如果需要将日出日落数据合并回WSW原数据集,使用左连接即可 WSW_merged <- WSW %>% left_join(df, by = "date")
注:如果你的WSW数据集里存储日期的列名不是
date,请把代码中所有WSW$date的date替换为你实际使用的列名。
思路2:更高效的轻量化实现(推荐)
无需先生成1986-2020年的全量日出日落数据集,直接把WSW中的41个日期传入getSunlightTimes函数即可,节省运行时间和内存占用,示例代码如下:
library(dplyr) # 处理WSW的日期列为Date格式 WSW$date <- as.Date(WSW$date) # 直接生成对应41个日期的日出日落数据 target_sun_data <- getSunlightTimes( date = WSW$date, keep = c("sunrise", "sunriseEnd", "sunset", "sunsetStart"), lat = 51.4545, lon = 2.5879, tz = "UTC" ) # 合并回原WSW数据集 WSW_merged <- WSW %>% left_join(target_sun_data, by = "date")
内容的提问来源于stack exchange,提问作者Emma_94
相关产品推荐
相关产品推荐

