r - 时间范围内的 Dplyr 窗口函数而不是行数

标签 r dplyr tidyverse

我有一个 R tibble,其中有一个时间列,格式如下:“2020-08-19 07:59:05 IDT” 我想创建一个附加列来实现一些聚合函数,但在时间范围内,例如我有一个附加列“金额”,我想创建一个附加列,为每行汇总前 10 秒的所有金额.

                 Time          Amount.  SumOverTime(10 sec)
1   2020-08-19 07:57:18             0.  0
2   2020-08-19 07:57:19             1.  1
3   2020-08-19 07:57:19             1.  2
4   2020-08-19 07:57:20             0.  2
5   2020-08-19 07:57:20             2.  4
6   2020-08-19 07:57:20             0.  4
7   2020-08-19 07:57:21             0.  4
8   2020-08-19 07:57:22             0.  4
9   2020-08-19 07:57:23             1.  5
10  2020-08-19 07:57:28             0.  5
11  2020-08-19 07:57:30             0.  3
12  2020-08-19 07:57:31             0.  1
13  2020-08-19 07:57:32             0.  1

感谢您的帮助!

最佳答案

使用{slider}

library(dplyr)
library(slider)

df %>% 
  count(Time, wt = Amount, name = "Amount") %>% 
  mutate(SumOverTime = slide_period_dbl(.x = df$Amount, .i = df$Time, 
                                        .period = "second", .before = 10,
                                        .f = sum, 
                                        .complete = FALSE))

#>                   Time Amount SumOverTime
#> 1  2020-08-19 07:57:18      0           0
#> 2  2020-08-19 07:57:19      2           2
#> 3  2020-08-19 07:57:20      2           4
#> 4  2020-08-19 07:57:21      0           4
#> 5  2020-08-19 07:57:22      0           4
#> 6  2020-08-19 07:57:23      1           5
#> 7  2020-08-19 07:57:28      0           5
#> 8  2020-08-19 07:57:30      0           3
#> 9  2020-08-19 07:57:31      0           1
#> 10 2020-08-19 07:57:32      0           1

请注意,我们使用 count 随着时间的推移进行预聚合,因为同一秒内发生多个事件,否则问题似乎定义不明确,因此这与预期输出不同。

关于r - 时间范围内的 Dplyr 窗口函数而不是行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63519614/

相关文章:

R和 Shiny : Pass inputs from sliders to reactive function to compute output

在两个表中使用组 ID 进行滚动连接

r - 如何从数据框中为 case_when 构造参数?

从列名中删除字符

r - 每日数据的运行总和在月份轮换时重置

r - 使用 r 从 s3 读取 zip 文件

javascript - 同步两个手持表的水平滚动

r - 在每行 1 个字符串中使用多个句子的 Dataframe 上应用 Sentimentr

r - 避免 dplyr 中向量和变量名之间的冲突

r - 如何使用 dplyr 将行转换为列