首页 > 解决方案 > 如何将秒数缩短为分钟间隔?

问题描述

我的数据排列如下:

Data <- data.frame(Seconds = c(4, 33, 46, 64, 78, 94, 100, 123, 150, 166, 183),
                   Margin = c(0, -1, 0, 1, 1, 2, 2, 3, 3, 4, 4))

我希望Margin在 1、2 和 3 分钟时获得。因此,我的预期输出将如下所示:

MinuteData <- data.frame(Minutes = c(1, 2, 3),
                         Margin = c(0, 2, 4))

我该怎么做呢?

标签: r

解决方案


您可以使用cut/findInterval将数据以秒为单位划分为分钟,并选择每分钟的最后一个值。

library(dplyr)

Data %>%
  group_by(Minutes = findInterval(Seconds, seq(0, max(Seconds), 60))) %>%
  summarise(Margin = last(Margin))

#   Minutes Margin
#    <int>  <dbl>
#1       1      0
#2       2      2
#3       3      4
#4       4      4

这将最后一个值视为新分钟,如果您只想考虑完整的分钟,可以删除最后一行。


这也可以用基数 R 编写:

with(Data, tapply(Margin, findInterval(Seconds, seq(0, max(Seconds), 60)), 
           function(x) x[length(x)]))

推荐阅读