如何在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
相关产品推荐
相关产品推荐

