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

如何在R中合并重复行?合并时保留Temp字段遇问题求助

解决方案

方法1:基础R的aggregate函数修正

你之前的代码有两个问题:一是分组仅指定了ID,没包含DATE,导致分组逻辑错误;二是只处理了Value字段,没对Temp做保留。由于同一DATE+ID组内的Temp值完全一致,我们可以对Temp取任意单一值(比如第一个值),同时对Value求和:

# 假设数据集名为data
result <- aggregate(
  list(Value = data$Value, Temp = data$Temp),
  by = list(DATE = data$DATE, ID = data$ID),
  FUN = function(x) if (length(unique(x)) == 1) unique(x) else sum(x)
)

或者更简化的写法(利用Temp组内值相同的特性):

result <- aggregate(Value ~ DATE + ID, data = data, sum)
# 手动匹配Temp值
result$Temp <- data$Temp[match(paste(result$DATE, result$ID), paste(data$DATE, data$ID))]

方法2:dplyr包(更直观高效)

如果习惯tidyverse风格,dplyr的分组语法更清晰,适合日常数据处理:

先安装加载包:

install.packages("dplyr")
library(dplyr)

执行分组聚合:

result <- data %>%
  group_by(DATE, ID) %>%
  summarise(
    Value = sum(Value),
    Temp = first(Temp),  # 每组Temp值相同,取第一个即可
    .groups = "drop"
  )

最终结果

运行上述任意代码后,都会得到你期望的合并结果:

DATEIDValueTemp
01-01-20001521
02-01-20002934
02-01-20003937

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:55:23