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

在R中对分组后重复行求和并合并dive_phase的实现方案

海豹生理数据重复时间窗口处理方案

需求说明

现有按seal_ID、diveNum、dive_phase分组的海豹生理数据,按20秒间隔汇总时,同一时间窗口内存在不同dive_phase的重复行。需完成以下处理:

  • 对重复行的beats20_max列求和
  • 合并对应dive_phase(如B和D合并为DB)
  • 必须按seal_ID和diveNum分组处理,避免跨个体/潜水的数据冲突

原始数据

seal_ID diveNum dive_phase datetime            HR_mean HR_max beats20_mean beats20_max
   <chr>     <dbl> <chr>      <dttm>                <dbl>  <dbl>        <dbl>       <int>
 8 Baikal       19 D          2019-04-02 14:43:00    38.6   44.8          6.5          12
 9 Baikal       19 D          2019-04-02 14:43:20    42.2   48            7.5          14
10 Baikal       19 D          2019-04-02 14:43:40    44.0   54.1          8            15
11 Baikal       19 D          2019-04-02 14:44:00    45.5   61.9          8            15
12 Baikal       19 D          2019-04-02 14:44:20    42.1   49.2          7.5          14
13 Baikal       19 D          2019-04-02 14:44:40    39.9   44.1          7            13
14 Baikal       19 D          2019-04-02 14:45:00    45.5   54.5          8            15
15 Baikal       19 D          2019-04-02 14:45:20    44.6   53.1          8            15
16 Baikal       19 D          2019-04-02 14:45:40    45.9   51.7          8            15
17 Baikal       19 B          2019-04-02 14:46:00    46.1   51.7          7.5          14
18 Baikal       19 D          2019-04-02 14:46:00    55.8   59.4          1.5           2
19 Baikal       19 B          2019-04-02 14:46:20    47.4   57.1          8            15
20 Baikal       19 B          2019-04-02 14:46:40    45.4   53.6          8            15

处理代码(dplyr)

library(dplyr)
library(stringr)

processed_data <- raw_data %>%
  # 按个体、潜水编号、时间窗口分组
  group_by(seal_ID, diveNum, datetime) %>%
  summarise(
    # 合并dive_phase:先排序再拼接,保证合并顺序一致(如B和D固定为DB)
    dive_phase = str_c(sort(unique(dive_phase)), collapse = ""),
    # 对重复行的beats20_max求和
    beats20_max = sum(beats20_max),
    .groups = "drop"
  ) %>%
  # 按时间排序,保持原始数据的时间顺序
  arrange(datetime)

处理后输出

seal_ID diveNum dive_phase datetime            beats20_max
   <chr>     <dbl> <chr>      <dttm>                <int>
 8 Baikal       19 D          2019-04-02 14:43:00    12
 9 Baikal       19 D          2019-04-02 14:43:20    14
10 Baikal       19 D          2019-04-02 14:43:40    15
11 Baikal       19 D          2019-04-02 14:44:00    15
12 Baikal       19 D          2019-04-02 14:44:20    14
13 Baikal       19 D          2019-04-02 14:44:40    13
14 Baikal       19 D          2019-04-02 14:45:00    15
15 Baikal       19 D          2019-04-02 14:45:20    15
16 Baikal       19 D          2019-04-02 14:45:40    15
17 Baikal       19 DB         2019-04-02 14:46:00    16  
18 Baikal       19 B          2019-04-02 14:46:20    15
19 Baikal       19 B          2019-04-02 14:46:40    15

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:39:14