складывается со временем как ширина - PullRequest
0 голосов
/ 11 июля 2019

У меня есть временной ряд (xts), и я пытаюсь получить максимальное значение за последние 30 секунд столбца Цена

Я попробовал функцию rollapply, но с шириной как время, и она, кажется, работает.

require(lubridate)
df$high_last_30secs <- rollapply(df$Price, width = seconds(30), FUN = max)

Но это не измерение 30 секунд назад, как я предполагал.

Вы можете видеть, что в "2018-02-01 09:02:45" high_last_30secs равно 3205.0, но 3205.0 в столбце Price происходит только в "2018-02-01 09:02:11", 34 секунды назад, когда должно было быть 30 ... это немного, но я нашел это очень странным.

                     Price high_last_30secs
2018-02-01 09:02:11 3205.0           3205.0
2018-02-01 09:02:12 3204.5           3205.0
2018-02-01 09:02:12 3204.5           3205.0
2018-02-01 09:02:12 3204.5           3205.0
2018-02-01 09:02:12 3204.5           3205.0
2018-02-01 09:02:12 3204.5           3205.0
2018-02-01 09:02:12 3204.5           3205.0
2018-02-01 09:02:13 3204.5           3205.0
2018-02-01 09:02:14 3204.5           3205.0
2018-02-01 09:02:19 3204.0           3205.0
2018-02-01 09:02:19 3204.0           3205.0
2018-02-01 09:02:25 3203.5           3205.0
2018-02-01 09:02:30 3203.5           3205.0
2018-02-01 09:02:30 3203.5           3205.0
2018-02-01 09:02:30 3203.5           3205.0
2018-02-01 09:02:30 3203.5           3205.0
2018-02-01 09:02:33 3203.5           3205.0
2018-02-01 09:02:35 3204.0           3205.0
2018-02-01 09:02:35 3204.0           3205.0
2018-02-01 09:02:35 3204.0           3205.0
2018-02-01 09:02:35 3204.0           3205.0
2018-02-01 09:02:35 3204.0           3205.0
2018-02-01 09:02:35 3204.0           3205.0
2018-02-01 09:02:38 3204.0           3205.0
2018-02-01 09:02:38 3204.0           3205.0
2018-02-01 09:02:38 3204.0           3205.0
2018-02-01 09:02:38 3204.0           3205.0
2018-02-01 09:02:38 3204.0           3205.0
2018-02-01 09:02:44 3203.5           3205.0
2018-02-01 09:02:45 3203.5           3205.0
2018-02-01 09:02:46 3203.5           3204.5
2018-02-01 09:02:46 3203.5           3204.5
2018-02-01 09:02:46 3203.5           3204.5

Я попробовал некоторые варианты функции rollapply. Лучший из них был Cummax как FUN, но у меня проблема с размерами

Очень ценю любую помощь!

для воспроизведения:

structure(c(3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 
3204, 3203, 3203, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 
3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 
3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 3204, 3204, 3204, 3204, 
3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204.5, 3204.5, 
3204.5, 3204.5, 3204.5, 3204.5, 3204.5, 3204.5, 3204.5, 3204.5, 
3204.5, 3204.5, 3204.5, 3204.5, 3205, 3205, 3205, 3204.5, 3204.5, 
3204.5, 3204.5, 3204.5, 3204.5, 3204.5, 3204.5, 3204.5, 3204.5, 
3204.5, 3205, 3205, 3205, 3204.5, 3204.5, 3204.5, 3204.5, 3204.5, 
3204.5, 3204.5, 3204.5, 3204, 3204, 3203.5, 3203.5, 3203.5, 3203.5, 
3203.5, 3203.5, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 
3204, 3204, 3204, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 
3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 
3203.5, 3203.5, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 
3204, 3204, 3204, 3204, 3204, 3204, 3203.5, 3203.5, 3203.5, 3203.5, 
3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5, 3203.5
), index = structure(c(1517482905, 1517482905, 1517482905, 1517482905, 
1517482905, 1517482905, 1517482905, 1517482905, 1517482908, 1517482908, 
1517482909, 1517482910, 1517482910, 1517482910, 1517482910, 1517482911, 
1517482911, 1517482911, 1517482912, 1517482913, 1517482913, 1517482913, 
1517482913, 1517482913, 1517482913, 1517482913, 1517482913, 1517482913, 
1517482913, 1517482914, 1517482914, 1517482914, 1517482914, 1517482914, 
1517482916, 1517482916, 1517482917, 1517482918, 1517482918, 1517482918, 
1517482923, 1517482923, 1517482923, 1517482923, 1517482923, 1517482923, 
1517482923, 1517482923, 1517482924, 1517482926, 1517482926, 1517482926, 
1517482926, 1517482926, 1517482927, 1517482930, 1517482930, 1517482930, 
1517482930, 1517482930, 1517482930, 1517482930, 1517482931, 1517482931, 
1517482931, 1517482931, 1517482931, 1517482931, 1517482931, 1517482931, 
1517482931, 1517482931, 1517482932, 1517482932, 1517482932, 1517482932, 
1517482932, 1517482932, 1517482933, 1517482934, 1517482939, 1517482939, 
1517482945, 1517482950, 1517482950, 1517482950, 1517482950, 1517482953, 
1517482955, 1517482955, 1517482955, 1517482955, 1517482955, 1517482955, 
1517482958, 1517482958, 1517482958, 1517482958, 1517482958, 1517482964, 
1517482965, 1517482966, 1517482966, 1517482966, 1517482966, 1517482967, 
1517482967, 1517482967, 1517482969, 1517482970, 1517482970, 1517482970, 
1517482970, 1517482970, 1517482970, 1517482975, 1517482975, 1517482975, 
1517482975, 1517482975, 1517482975, 1517482975, 1517482975, 1517482977, 
1517482978, 1517482978, 1517482978, 1517482978, 1517482982, 1517482987, 
1517482987, 1517482987, 1517482987, 1517482987, 1517482987, 1517482987, 
1517482987, 1517482991, 1517482991, 1517482991, 1517482991), tzone = "", tclass = c("POSIXct", 
"POSIXt")), class = c("xts", "zoo"), .indexCLASS = c("POSIXct", 
"POSIXt"), .indexTZ = "", tclass = c("POSIXct", "POSIXt"), tzone = "", .Dim = c(141L, 
1L), .Dimnames = list(NULL, "Price"))
...