У меня есть время в Канаде / горное время. Данные за час. За день я хочу взять значение F в 0:29:05 (Fn) (Fn = значение F сразу после полуночи по местному времени), и для каждого дня я хочу рассчитать Z = (Fn-F) / Fn
Тем не менее, ему нужно выбрать Fn для 0:29:05 в Cadadian / Mountain, и для каждого часа в день z нужно вычислять, используя Fn того дня.
Фиктивные данные:
datetime <- seq(
from=as.POSIXct("2012-1-1 0:29:05", tz="Canada/Mountain"),
to=as.POSIXct("2012-2-1 0:29:05", tz="Canada/Mountain"),
by="hour")
#variable F
F <- runif(745, min = 0, max =2)
df <- as.data.frame(cbind(datetime,F))
library(lubridate)
#make sure its in "POSIXct" "POSIXt" format
df$datetime <- as_datetime(df$datetime)
Теперь у меня уже была некоторая помощь в dplyr при использовании минутного набора данных - но, очевидно, мое понимание все еще довольно слабое, поскольку я не могу перевести это на мой пример данных часа-1. Ниже приведена моя попытка ... и я думаю, что, возможно, мутация является правильным вариантом в этом случае?
df2 <- df %>%
group_by(Date = as.Date(datetime)) %>%
mutate(Fn = F[hour(datetime) == 0]),
z = (Fn - F)/Fn) %>%
ungroup() %>%
select(-Date)
Спасибо.