You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言实现日期范围不等的分组数据集按日合并

R语言实现两个数据框按日期分组全量匹配、缺失值补0

实现思路

核心是用左连接以包含全量日期、分组组合的DF1为基准表,匹配DF2的指标字段,再将匹配不到的缺失指标填充为0即可:

  • 连接时以Date(日期)、Group(分组)两个字段作为共同匹配键
  • 保留DF1的所有行,DF2匹配到的行保留原有New、Processed值,匹配不到的位置会自动生成NA值
  • 最后将两个指标列的NA值统一替换为0,就是最终需要的结果

具体代码实现

方法1:dplyr 写法(最常用,可读性高)

先确保已安装dplyr包,运行以下代码即可:

library(dplyr)

# 提前校验日期字段类型,若不是Date类型先执行转换
DF1$Date <- as.Date(DF1$Date)
DF2$Date <- as.Date(DF2$Date)

# 连接+补0
final_df <- DF1 %>%
  left_join(DF2, by = c("Date", "Group")) %>%
  mutate(
    New = ifelse(is.na(New), 0, New),
    Processed = ifelse(is.na(Processed), 0, Processed)
  )

方法2:Base R 写法(无需加载第三方包)

不需要安装任何扩展包,直接运行基础R代码就能实现:

# 提前校验日期字段类型
DF1$Date <- as.Date(DF1$Date)
DF2$Date <- as.Date(DF2$Date)

# 左连接
final_df <- merge(
  x = DF1,
  y = DF2,
  by = c("Date", "Group"),
  all.x = TRUE
)

# 将两个指标列的缺失值替换为0
final_df[, c("New", "Processed")][is.na(final_df[, c("New", "Processed")])] <- 0

结果校验

按照给出的示例场景,跑完代码后1001分组对应日期的输出结果如下,完全符合要求:

DateGroupNewProcessed
2021-04-2010011000
2021-04-21100100

内容的提问来源于stack exchange,提问作者user17582908

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 21:03:38