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

使用R语言dplyr包为多维度数据组合补全缺失小时的中位数

实现代码及说明

依赖包

  • 核心依赖dplyr做分组计算,tidyr做行列补全,均属于tidyverse生态

完整实现代码

# 加载依赖包
library(dplyr)
library(tidyr)

# 假设你的原始数据集命名为raw_df
result_df <- raw_df %>%
  # 按指定5个维度分组,计算每组transaction的中位数,保留所有原始行
  group_by(seller, product, detail, status, channel) %>%
  mutate(group_median = median(transaction, na.rm = TRUE)) %>%
  ungroup() %>%
  # 按日期+5个业务维度分组,为每个分组补全0-23的全部小时值
  group_by(datex, seller, product, detail, status, channel) %>%
  complete(hourx = 0:23) %>%
  ungroup() %>%
  # 补全行的transaction缺失值填充为对应组的中位数
  mutate(transaction = coalesce(transaction, group_median)) %>%
  # 可选步骤:删除计算用的中间列
  select(-group_median)

关键逻辑说明

  • group_by+mutate组合不会聚合行,只会给每个分组下的所有行新增对应分组的中位数,完整保留原始数据的全部信息
  • complete函数会自动为每个分组生成0到23的全部hourx值,已存在的行保持不变,缺失的行自动生成,同组的seller/product等维度会自动填充为对应分组的固定值
  • coalesce函数优先取原始transaction的非缺失值,原始值为空的补全行自动取预计算的分组中位数填充

注意事项

  • 需确保hourx字段为数值类型,若为字符型可先通过mutate(hourx = as.integer(hourx))转换后再运行上述代码
  • 计算中位数时默认忽略NA值,若需要调整规则可修改median函数的na.rm参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 01:24:04