I have a dataset within a reactive dygraph that looks like this:
data()$data.o
date | data.o |
---|---|
2022-07-21 12:10 AM | 400.1 |
2022-07-21 12:11 AM | 33.9 |
2022-07-21 12:12 AM | 32.5 |
2022-07-21 12:13 AM | 35.1 |
2022-07-21 12:14 AM | 31.5 |
2022-07-21 12:15 AM | 39.5 |
I want to find the max value in the last 5 minutes so I can set my axis scale accordingly.
I've tried:
enddate = max(data()$date)
startdate = enddate - (60*5)
oMx <- max(datao.xts[startdate/enddate], na.rm = T)
But I get an error using datao.xts.
Is there a better way to go about this?
Edit:
Trying on a larger dataset for the last 480 minutes, returns -inf:
xts <- xts::xts(hvilleo, order.by = data()$date)
enddate <- end(xts) startdate <- enddate - (480-1) * 60
xts[paste0(startdate, enddate, sep = "/")] |> max(na.rm = TRUE) xts |>
utils::tail(480) |> max(na.rm =TRUE)
As far as I'm familiar with xts
, your startdate/enddate
part has simply to be a string, c.f. Joshua's response here. That's it.
# allow me to create an xts object beforehand
datetimes <- c("2022-07-21 12:10 AM",
"2022-07-21 12:11 AM",
"2022-07-21 12:12 AM",
"2022-07-21 12:13 AM",
"2022-07-21 12:14 AM",
"2022-07-21 12:15 AM") |>
strptime(format = "%Y-%m-%d %I:%M %p") |>
as.POSIXct()
data <- c(400.1, 33.9, 32.5, 35.1, 31.5, 39.5)
xts <- xts::xts(data, order.by = datetimes)
# minor adjustments to your approach
enddate <- end(xts)
startdate <- enddate - (5-1) * 60
xts[paste0(startdate, enddate, sep = "/")] |> max()
#> [1] 39.5
# assuming you are interested in the last five observations
xts |> utils::tail(5) |> max()
#> [1] 39.5