Supponiamo di passare "2015-01-01 01:50:50"
, quindi deve restituire "2015-01-01 01:00:00"
e "2015-01-01 02:00:00"
. Come calcolare questi valori in R?Trova ora precedente e ora successiva in R
6
A
risposta
6
Supponendo che il tuo tempo fosse una variabile "X", puoi usare round
o trunc
.
Prova:
round(X, "hour")
trunc(X, "hour")
Questo sarebbe ancora bisogno di qualche lavoro per determinare se i valori fossero stati effettivamente arrotondate (per round
). Quindi, se non si vuole avere a pensare a questo, si può considerare l'uso del "lubridate" pacchetto:
X <- structure(c(1430050590.96162, 1430052390.96162), class = c("POSIXct", "POSIXt"))
X
# [1] "2015-04-26 17:46:30 IST" "2015-04-26 18:16:30 IST"
library(lubridate)
ceiling_date(X, "hour")
# [1] "2015-04-26 18:00:00 IST" "2015-04-26 19:00:00 IST"
floor_date(X, "hour")
# [1] "2015-04-26 17:00:00 IST" "2015-04-26 18:00:00 IST"
5
vorrei andare con il seguente involucro con base di R (è possibile specificare il fuso orario con l'argomento tz
all'interno della funzione strptime
)
Myfunc <- function(x){x <- strptime(x, format = "%F %H") ; c(x, x + 3600L)}
Myfunc("2015-01-01 01:50:50")
## [1] "2015-01-01 01:00:00 IST" "2015-01-01 02:00:00 IST"
che funziona troppo :-) io probabilmente consiglia di utilizzare 'list' invece di' C' in modo che quando si tratta di vettori come ingresso, è un po 'più facile da gestire. A proposito, da quando era il tuo fuso orario IST? – A5C1D2H2I1M1N2O1R2T1
@AnandaMahto Questa è una buona domanda ... –
India Standard Time :) –