[R] change frequency of wind data correctly

Mathew Guilfoyle mrgu|||oy|e @end|ng |rom gm@||@com
Sun Dec 6 21:29:09 CET 2020

Hi Stefano

I think either of these does what you need...

1: This gets the interval column as you want it, but utilises the lubridate package:

mydf$interval = ceiling_date(mydf$data_POSIX, unit="30 minutes”)

2: Alternative in base R is a bit more long winded: convert the date to numeric (in seconds), divide by 1800 (seconds in 30min), take the ceiling, and convert back.

mydf$interval = as.POSIXct(ceiling(as.numeric(mydf$data_POSIX)/1800)*1800, origin="1970-01-01", tz="Etc/GMT-1")


> On 2 Dec 2020, at 17:53, Stefano Sofia <stefano.sofia using regione.marche.it> wrote:
> init_day <- as.POSIXct("2018-02-01-00-00", format="%Y-%m-%d-%H-%M", tz="Etc/GMT-1")
> fin_day <- as.POSIXct("2018-02-01-02-00", format="%Y-%m-%d-%H-%M", tz="Etc/GMT-1")
> mydf <- data.frame(data_POSIX=seq(init_day, fin_day, by="10 mins"))
> mydf$vmax <- round(rnorm(13, 35, 10))
> mydf$interval <- cut(mydf$data_POSIX, , breaks="30 min")
> means <- aggregate(vmax ~ interval, mydf, mean)

	[[alternative HTML version deleted]]

More information about the R-help mailing list