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

基于位置与日期条件合并数据行的R语言实现问题

解决方案:合并相同分组的观测值

你的需求核心是:将**相同location、start和detected**的观测行合并,对count字段求和,其他字段保留对应分组的唯一值。

原始数据集

ex_df <- data.frame(
  location = c('park', 'park', 'school', 'cemetery', 'cemetery', 'park'),
  count = c(50, 50, 4, 9, 26, 10),
  start = c('7/24/1999', '7/24/1999', '8/9/2000','8/19/2000', '9/2/2001', '9/2/2001'),
  detected = c('detected', 'detected', 'not detected', 'detected', 'not detected', 'detected')
)

目标精简数据集

target_df <- data.frame(
  location = c('park', 'school', 'cemetery', 'cemetery', 'park'),
  count = c(100, 4, 9, 26, 10),
  start = c('7/24/1999', '8/9/2000','8/19/2000', '9/2/2001', '9/2/2001'),
  detected = c('detected', 'not detected', 'detected', 'not detected', 'detected')
)

正确实现方法

方法1:使用dplyr包(推荐)

你之前用group_by后出现多余观测,是因为没配合summarise完成聚合操作。summarise会自动将每个分组压缩为一行,不会残留冗余数据:

library(dplyr)

clean_df <- ex_df %>%
  # 按三个字段分组
  group_by(location, start, detected) %>%
  # 对count求和,同时取消分组状态
  summarise(count = sum(count), .groups = "drop")

# 输出结果
clean_df

方法2:使用Base R(无需额外包)

用aggregate函数直接完成分组求和:

clean_df <- aggregate(count ~ location + start + detected, data = ex_df, sum)

两种方法都能直接得到你需要的精简数据集,不会有多余观测残留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:42:38