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

在R中按分组与时间规则聚合求和Grade值的实现方法

R语言实现数据筛选与汇总方案

步骤说明

我们分两步处理数据:先按规则筛选出符合要求的行,再按group分组求和。以下是基于dplyr包的实现方案(dplyr是R中常用的数据处理工具,语法直观易读)。

1. 构造示例数据

首先将你提供的数据集转换为R可处理的格式,注意将Time列转换为时间类型:

library(dplyr)

# 创建示例数据框
df <- tibble(
  group = c(1,2,2,2,3,3,3,3,4,4,4,5,5,6),
  Time = as.POSIXct(c(
    "2014-03-03 09:15:00",
    "2010-10-20 17:22:00",
    "2010-10-20 20:08:00",
    "2010-11-28 08:43:00",
    "2019-12-06 14:41:00",
    "2019-12-06 14:41:00",
    "2020-01-07 11:01:00",
    "2020-02-16 17:35:00",
    "2019-07-01 07:10:00",
    "2019-08-01 08:56:00",
    "2019-09-01 12:03:00",
    "2016-08-19 17:12:00",
    "2016-08-19 17:10:00",
    "2021-11-03 10:41:00"
  )),
  Grade = c(31,28,28,28,31,28,28,28,31,31,31,60,31,28)
)

2. 按规则筛选数据

先处理同一group下日期相同、时间不同的情况,保留最新时间的行;再处理同一group下日期和时间均相同的情况,保留Grade最小值的行:

# 数据清洗流程
cleaned_df <- df %>%
  mutate(date = as.Date(Time)) %>%  # 提取日期部分用于分组
  group_by(group, date) %>%
  filter(Time == max(Time)) %>%    # 同一组同一日期,保留最新时间的记录
  ungroup() %>%
  group_by(group, Time) %>%
  filter(Grade == min(Grade)) %>%  # 同一组同一时间,保留Grade最小的记录
  ungroup() %>%
  select(-date)  # 移除临时生成的date列

3. 分组求和得到最终结果

对筛选后的数据集按group分组,求和Grade得到Total_G:

# 计算各组总分
final_result <- cleaned_df %>%
  group_by(group) %>%
  summarise(Total_G = sum(Grade), .groups = "drop")

# 输出结果
print(final_result)

执行上述代码后,会得到你需要的汇总结果:

# A tibble: 6 × 2
  group Total_G
  <dbl>   <dbl>
1     1      31
2     2      56
3     3      84
4     4      93
5     5      60
6     6      28

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:25:00