скользящий мин / макс по временному окну, а не по количеству строк - PullRequest
0 голосов
/ 19 января 2020

У меня есть следующий фрейм данных:

df <- structure(list(date = structure(c(1082134980, 1082150520, 1082162400,
1082176200, 1082188800, 1082205000, 1082221500, 1082259000, 1082349000,
1082439300), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
    value = c(4.9, 5.2, 4.5, 4.2, 3.8, 3.4, 3.4, 2.8, 2.2, 1.8
    )), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-10L))

Я хотел бы вывести в качестве третьего столбца максимальное значение в каждом 12-часовом блоке. Наиболее близкой мне была функция max_run из библиотеки runner:

Так что я попытался сделать это, изменив дату (а не дату и время), приняв окно времени равным 0,5:

df %>% mutate(Date = date(date), v_max12 = max_run(value, k = 0.5, idx = Date))

0,5 за половину 24 часа. Однако эта функция принимает только целые числа. Я ожидаю вывод:

df %<>% mutate(Result = c(4.9, 5.2, 5.2, 4.5, 4.5, 4.2, 3.8, 3.4, 2.8, 2.2))

Есть ли способ сделать это проще с rollapply? Кроме того, я хотел бы также иметь возможность рассчитать максимальный форвард, после этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...