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

如何在R中压缩含NA的data frame,消除空缺并合并同日期行?

数据规整解决方案

针对你提供的这种每个日期对应多行、每行仅单个数值列有值的情况,可以用以下两种高效的R方法完成数据合并,同时删除CATEGORY列:

方法1:dplyr分组聚合

利用分组后取最大值(自动忽略NA)的方式提取每组的非NA值——因为每组内每个数值列仅有一个有效数据,取最大值等价于提取该唯一有效值:

library(dplyr)

# 假设原始数据框为df
cleaned_df <- df %>%
  select(-CATEGORY) %>%  # 移除CATEGORY列
  group_by(INVOICE_DATE) %>%
  summarize(
    across(everything(), ~ max(.x, na.rm = TRUE)),
    .groups = "drop"
  )

方法2:tidyr填充去重

通过双向填充补全NA值,再保留每个日期的唯一行,实现数据合并:

library(tidyr)
library(dplyr)

cleaned_df <- df %>%
  select(-CATEGORY) %>%
  group_by(INVOICE_DATE) %>%
  fill(everything(), .direction = "downup") %>%  # 上下填充补全所有NA
  distinct(INVOICE_DATE, .keep_all = TRUE) %>%  # 保留每个日期的唯一记录
  ungroup()

处理后效果

最终表格每行对应一个INVOICE_DATE,Crumble、Tincture、Battery列均为对应日期的有效数值;Other列因无有效数据会保留NA,若不需要可额外添加select(-Other)语句删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:30:54