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

R语言合并多小时观测数据框:消除重复行与冗余NA值

多小时观测数据合并去重解决方案

Tidyverse 通用实现

先把所有数据框放进一个列表,纵向绑定后按hour分组,对每个变量提取有效非NA值:

library(tidyverse)

# 示例:把所有数据框存入列表dfs(可通过list()或批量读取文件生成)
combined_df <- dfs %>%
  bind_rows() %>%
  group_by(hour) %>%
  summarise(
    across(everything(), ~ first(na.omit(.x))),
    .groups = "drop"
  )

聚合函数替换说明

根据你的数据场景选择:

  • 同一hour同一变量仅1个有效观测:first(na.omit(.x))、last(na.omit(.x))、unique(na.omit(.x))都适用,结果一致。
  • 同一hour同一变量有重复有效值:用unique(na.omit(.x))去重;如果是布尔变量,用any(na.omit(.x))。
  • 同一hour同一变量有多个不同有效值:按业务逻辑选mean(na.omit(.x))(均值)、median(na.omit(.x))(中位数)、max(na.omit(.x))(最大值)、min(na.omit(.x))(最小值),或自定义函数。

Data.table 大规模数据优化方案

针对超大数据集,data.table的速度和内存效率更优:

library(data.table)

# 转换为data.table并合并
dt_list <- lapply(dfs, as.data.table)
combined_dt <- rbindlist(dt_list)

# 分组聚合去重
result_dt <- combined_dt[, lapply(.SD, function(x) first(na.omit(x))), by = hour]

# 可选:转回data.frame
result_df <- as.data.frame(result_dt)

这里的聚合函数替换逻辑和上面完全一致,按需替换即可。

核心注意事项

  • 确保所有数据框的hour列格式统一(比如都是POSIXct时间、统一的字符/数值格式),否则分组会出问题。
  • 如果存在同一hour同一变量的冲突观测(不同数值),必须先明确业务规则再选聚合函数,避免结果不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:23:19