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

如何在R中合并日期排序数据集的变量连续重复块并生成起止日期

实现方案

你可以借助dplyr(1.1.0及以上版本)内置的consecutive_id函数实现连续相同观测的分组汇总,代码如下:

# 加载依赖包
library(dplyr)

result <- df %>%
  # 过滤掉浓度为NA的无效行
  filter(!is.na(concentration)) %>%
  # 按站点、污染物、标签分组,不同维度的序列分开处理
  group_by(station, pollutant, tag) %>%
  # 生成连续相同浓度的分组ID
  mutate(grp = consecutive_id(concentration)) %>%
  # 按分组ID和维度字段汇总
  group_by(station, pollutant, tag, concentration, grp) %>%
  summarise(
    start_date = min(date),
    end_date = max(date),
    .groups = "drop"
  ) %>%
  # 移除辅助分组字段
  select(-grp)

代码说明

  • consecutive_id会对连续重复的取值生成相同的整数ID,刚好匹配你需要的「连续相同浓度归为同一组」的需求
  • 代码中已经按station、pollutant、tag三个维度预分组,支持这三个字段有多种取值的场景
  • 最终输出会自动保留所有维度字段、浓度值、以及对应连续区间的起止日期,和你需要的输出格式完全一致

低版本dplyr兼容方案

如果你使用的dplyr版本低于1.1.0,没有consecutive_id函数,可以将生成grp的代码替换为以下逻辑:

mutate(grp = cumsum(c(TRUE, diff(concentration) != 0)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 07:21:02