Усечь временной ряд зоопарка до ближайших 10 минут.

StackOverflow https://stackoverflow.com/questions/8894322

  •  29-10-2019
  •  | 
  •  

Вопрос

У меня есть временной ряд зоопарка следующим образом:

>> head(ww)
(11/22/08 11:37:00) (11/22/08 12:07:00) (11/22/08 12:22:00) (11/22/08 12:37:00) 
           0.087114            0.055422            0.055250            0.059483 
(11/22/08 12:52:00) (11/22/08 13:07:00) 
           0.057896            0.061808

Как видите, время 11:37, 12:07, 12:22 и т. д.Я хотел бы изменить это время на ближайшее целое число, кратное десяти минутам, например XX:10, XX:20.В этом случае 11:37 станет 11:40, 12:07 станет 12:10, а 12:22 станет 12:20.

Я нашел, как агрегировать его с точностью до минуты:

wholemin <- function(x) trunc(x, units="minutes")
result = aggregate(r, wholemin, head, 1)

Но я не могу использовать trunc агрегировать во что угодно, кроме секунд, минут, часов и т. д.

Как мне это сделать?

Для простоты примеров вывод dput(head(ww) ниже:

structure(c(0.087114, 0.055422, 0.05525, 0.059483, 0.057896, 
0.061808), index = structure(c(14205.4840277778, 14205.5048611111, 
14205.5152777778, 14205.5256944444, 14205.5361111111, 14205.5465277778
), format = structure(c("m/d/y", "h:m:s"), .Names = c("dates", 
"times")), origin = structure(c(1, 1, 1970), .Names = c("month", 
"day", "year")), class = c("chron", "dates", "times")), class = "zoo")
Это было полезно?

Решение

Попробуй это:

to10 <- function(tt) trunc(tt + as.numeric(times("00:05:00")), units = "00:10:00")
aggregate(z, to10, mean)

и посмотрите примеры в ?trunc.times и ?aggregate.zoo .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top