【问题标题】:Creating intervals of 5 seconds for data and grouping them为数据创建 5 秒的间隔并将它们分组
【发布时间】:2019-09-17 09:32:53
【问题描述】:

我有一个数据框,其中一列是时间,另一列是价格。看起来像这样

Time     | Price
15:31:01 | 2
15:31:03 | 4
15:31:05 | 3
15:31:08 | 1
15:31:10 | 9

我想以 5 秒为间隔对数据进行分组,并取每 5 秒间隔的平均值,如下所示

Time     | Price
15:31:05 | 4.5
15:31:10 | 5

我知道可以通过 dplyr 将它们分组在几分钟内,我提取每行的分钟数据,然后按分钟分组。但是有没有办法为自定义的第二个间隔做到这一点?在这种情况下,我正在查看 5 秒的间隔。

【问题讨论】:

  • 第一个区间的平均 4.5 是多少?不应该是 3 吗? (2 + 4 + 3)/3
  • 如果它对您有用,请考虑接受答案,或者澄清您是否正在寻找其他东西。

标签: r


【解决方案1】:

我们可以将Time 列转换为POSIXct 格式,将cut 转换为“5 秒”的间隔,并将其用作一个组,并在每个组中取mean

aggregate(Price~ group, transform(df, 
    group = cut(as.POSIXct(Time, format = "%T"), breaks = "5 secs")), mean)

#                group Price
#1 2019-09-17 15:31:01     3
#2 2019-09-17 15:31:06     5

数据

df <- structure(list(Time = structure(1:5, .Label = c("15:31:01", "15:31:03", 
"15:31:05", "15:31:08", "15:31:10"), class = "factor"), Price = c(2L, 
4L, 3L, 1L, 9L)), class = "data.frame", row.names = c(NA, -5L))

【讨论】:

    猜你喜欢
    • 2018-04-14
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2019-03-30
    相关资源
    最近更新 更多