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

使用dplyr扩展分组DataFrame:补全缺失日期并填充NA

补全分组DataFrame的缺失日期记录

针对你提供的分组DataFrame,要为每个id补全所有出现过的日期记录,缺失的value列填充NA,这里提供两种实用方法:

数据构造代码

id <- c("a", "a", "a", "b", "b", "b", "c")
date <- c("2020-01-01", "2020-01-02", "2020-01-03",
          "2020-01-01", "2020-01-02", "2020-01-03",
          "2020-01-01")
value <- rnorm(n = length(id))
df <- cbind.data.frame(id, date, value)

方法一:使用tidyr::complete(简洁高效)

借助tidyverse工具集里的complete函数,一键生成id和date的所有组合,自动填充缺失的value为NA:

library(tidyverse)

df_complete <- df %>%
  complete(id, date)

执行后,id为"c"的记录会自动补上2020-01-02和2020-01-03的行,对应的value列是NA。

方法二:Base R实现(无需额外包)

如果不想加载第三方包,用基础R的expand.grid和merge也能实现:

# 生成所有id和日期的组合
all_pairs <- expand.grid(id = unique(df$id), date = unique(df$date), stringsAsFactors = FALSE)

# 左连接原数据,补全缺失值
df_complete <- merge(all_pairs, df, by = c("id", "date"), all.x = TRUE)

expand.grid会创建所有可能的id-date配对,merge的all.x=TRUE参数确保保留所有配对,原数据中没有的记录会自动给value赋值NA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:09:16