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

如何在R语言中合并数据框内重复日期时间的相似行?

合并重复Date_Time行并填充NA值的R实现

原始数据

df <- data.frame(
  Date_Time = c("2023-06-14 09:43:06", "2023-06-14 09:43:09", "2023-06-14 09:43:12",
                "2023-06-14 09:43:06", "2023-06-14 09:43:09", "2023-06-14 09:43:12"),
  Heat_Capacity = c(219857, 219857, 219857, NA, NA, NA),
  Heat_Transfer_Coefficient = c(NA, NA, NA, 0, 0, 0)
)

需求

将重复的Date_Time行合并,填充对应列的NA值,得到每行唯一Date_Time且两列均为有效值的结果。

解决方案

方法1:使用dplyr分组聚合

通过dplyr按Date_Time分组,提取每组非NA的有效值:

library(dplyr)

df_cleaned <- df %>%
  group_by(Date_Time) %>%
  summarise(
    Heat_Capacity = max(Heat_Capacity, na.rm = TRUE),
    Heat_Transfer_Coefficient = max(Heat_Transfer_Coefficient, na.rm = TRUE)
  )

# 输出结果
print(df_cleaned)

说明:每组中每个列仅存在一个非NA值,使用max(或min/sum)配合na.rm=TRUE即可提取有效值。

方法2:使用base R的aggregate函数

无需额外包,用base R原生函数实现:

df_cleaned <- aggregate(. ~ Date_Time, data = df, FUN = function(x) x[!is.na(x)])

# 输出结果
print(df_cleaned)

说明:按Date_Time分组后,对每个列直接筛选出非NA元素,因每组仅有一个有效值,可直接提取。

最终结果

运行后得到的结果如下:

# A tibble: 3 × 3
  Date_Time           Heat_Capacity Heat_Transfer_Coefficient
  <chr>                      <dbl>                      <dbl>
1 2023-06-14 09:43:06       219857                          0
2 2023-06-14 09:43:09       219857                          0
3 2023-06-14 09:43:12       219857                          0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:45:13