如何将时间段对应的均值填充到时段内各日期生成日度数据集
实现方案
你需要的核心逻辑是将每条记录的[startdate, enddate]日期区间展开为连续单日序列,同时将对应区间的Conc值同步到所有单日记录上,以下提供两种适配不同数据规模的实现方案:
方案1:tidyverse 实现(代码可读性高,适合中小规模数据集)
# 加载依赖包 library(tidyverse) # 假设你的原始数据集名为df df_daily <- df %>% rowwise() %>% # 对每行生成从开始到结束的完整日期序列 mutate(Date = list(seq(startdate, enddate, by = "1 day"))) %>% # 展开列表列为普通行 unnest(Date) %>% # 保留需要的字段,如有其他字段可自行添加到选择列表中 select(Date, Conc)
方案2:data.table 实现(运行效率极高,适合超大规模数据集)
# 加载依赖包 library(data.table) # 将数据集转为data.table格式 setDT(df) # 按行展开日期区间 df_daily <- df[, .(Date = seq(startdate, enddate, by = "1 day"), Conc = Conc), by = 1:nrow(df)][, !"nrow"]
两种方案输出结果和你提供的预期示例完全匹配,且会原样保留原数据中的NA值。如果你的原始数据存在重叠的日期区间,可在展开后根据业务需求自行做去重或聚合处理。
内容的提问来源于stack exchange,提问作者AgungGK
相关产品推荐
相关产品推荐

