R中有没有办法计算行集之间的最大差值+平均值?

Is there a way in R to calculate max difference + average between sets of rows?

我对不同条件下的列求和有疑问,真的需要一些帮助。

考虑这个数据table:

animal on animal off Time
cat dog 0
dog cat 10
cat dog 30
dog cat 40
cat dog 50
horse cat 60
cat horse 100
dog(END) cat(END) 110

我想在这里计算动物在围场停留的最长和平均时间。这个简单的例子有两个,但实际上有数百个!查看“时间”列,狗在第二行和第三行之间最多停留了 20 分钟。所以最多 20 分钟,平均 15 分钟(一节 20 分钟,一节 10 分钟)。或者,猫最多停留十分钟,平均十分钟(它在围场上每次十分钟,三次)。

所以我的输出看起来像这样:

animal Max time Average Time
cat 10 10
dog 20 15
horse 40 40

任何帮助将不胜感激!!

使用diffgroup_bysummarise

df %>% 
    mutate(time_diff = c(diff(Time), NA)) %>% 
    group_by(`animal on`) %>% 
    summarise(
        `Max time` = max(time_diff, na.rm = TRUE),
        `Average Time` = mean(time_diff, na.rm = TRUE)
    )
# A tibble: 2 × 3
  `animal on` `Max time` `Average Time`
  <chr>            <dbl>          <dbl>
1 cat                 10             10
2 dog                 20             15