У меня есть набор данных о погоде в 10-минутной скользящей средней, показывающий с интервалом в 1 минуту. Я хотел бы преобразовать его в среднее значение за 1 час.
Date Direction Speed
1 2017-07-06 00:01:00 93 7.3
2 2017-07-06 00:02:00 92 7.4
3 2017-07-06 00:03:00 92 7.3
4 2017-07-06 00:04:00 91 7.4
5 2017-07-06 00:05:00 91 7.3
6 2017-07-06 00:06:00 91 7.3
7 2017-07-06 00:07:00 91 7.2
8 2017-07-06 00:08:00 90 7.1
9 2017-07-06 00:09:00 90 6.9
10 2017-07-06 00:10:00 91 6.7
...
(thousands of row of data in 1 min-interval
* Направление и скорость выше в 10-минутном скользящем среднем
Для обычных встроенных функций скользящего среднего они встречают все значения окрестностей, например:
rollmean(timeLine$Speed, 60, fill=FALSE, align = "right")
приведет к броску среднего значения для каждого значения, встречающегося с n, n-1, n-2, n-3, ..., n-59.
Однако, поскольку мои необработанные данные уже являются средними за 10 минут, мне просто нужно принять значения n, n-10, n-20, n-30, n-40, n-50, чтобы преобразовать их в среднечасовое значение.
Например, если я хочу почасовые данные за 2001-07-06 10:00:00, мне просто нужно взять среднее значение для следующих значений:
- 2001-07-06 10: 00: 00
- 2001-07-06 09: 50: 00
- 2001-07-06 09: 40: 00
- 2001-07-06 09: 30: 00
- 2001-07-06 09: 20: 00
- 2001-07-06 09: 10: 00
Есть ли какой-нибудь способ, которым я мог бы плавно рассчитать его по R?
Заранее спасибо за помощь!
Обновление 1: вот dput (head (timeLine, 10))
structure(
list(
Date = structure(c(1499270460, 1499270520, 1499270580, 1499270640, 1499270700, 1499270760, 1499270820, 1499270880, 1499270940, 1499271000),
class = c("POSIXct", "POSIXt"), tzone = "Asia/Hong_Kong"),
Direction = c(93L, 92L, 92L, 91L, 91L, 91L, 91L, 90L, 90L, 91L),
Speed = c(7.3, 7.4, 7.3, 7.4, 7.3, 7.3, 7.2, 7.1, 6.9, 6.7)),
.Names = c("Date", "Direction", "Speed"),
row.names = c(NA, 10L),
class = "data.frame")