Message-ID: <6FA20CB0-7DC1-407F-8A3F-A618D7483EEE@dcn.davis.ca.us>
Date: 2020-09-21T17:06:52Z
From: Jeff Newmiller
Subject: aggregate semi-hourly data not 00-24 but 9-9
In-Reply-To: <CAGgJW77j81F45QUHvbM32VZi=6HKwaAPsqt8B63=C6WoPt60_A@mail.gmail.com>
The base R as.difftime function is perfectly usable to create this offset without pulling in lubridate.
On September 21, 2020 8:06:51 AM PDT, Eric Berger <ericjberger at gmail.com> wrote:
>Hi Stefano,
>If you mean from 9am on one day to 9am on the following day, you can
>do a trick. Simply subtract 9hrs from each timestamp and then you want
>midnight to midnight for these adjusted times, which you can get using
>the method you followed.
>
>I googled and found that lubridate::hours() can be used to add or
>subtract hours from a POSIXct.
>
>library(lubridate)
>
>day_1 <- as.POSIXct("2020-02-19-00-00", format="%Y-%m-%d-%H-%M",
>tz="Etc/GMT-1")
>day_2 <- as.POSIXct("2020-02-24-12-00", format="%Y-%m-%d-%H-%M",
>tz="Etc/GMT-1")
>df1 <- data.frame(data_POSIX=seq(day_1, day_2, by="30 min"))
>df1$hs <- rnorm(nrow(df1), 40, 10)
>df1$diff[2:nrow(df1)] <- diff(df1$hs)
>
>df1$data_POSIXminus9 <- df1$data_POSIX - lubridate::hours(9)
>df1$dayX <- format(df1$data_POSIXminus9,"%y-%m-%d")
>df2X <- aggregate(diff ~ dayX, df1, sum)
>df2X
>
>HTH,
>Eric
>
>On Mon, Sep 21, 2020 at 5:30 PM Stefano Sofia
><stefano.sofia at regione.marche.it> wrote:
>>
>> Dear R-list members,
>> I have semi-hourly snowfall data.
>> I should sum the semi-hourly increments (only the positive ones, but
>this is not described in my example) day by day, not from 00 to 24 but
>from 9 to 9.
>>
>> I am able to use the diff function, create a list of days and use the
>function aggregate, but it works only from 0 to 24. Any suggestion for
>an efficient way to do it?
>> Here my code:
>> day_1 <- as.POSIXct("2020-02-19-00-00", format="%Y-%m-%d-%H-%M",
>tz="Etc/GMT-1")
>> day_2 <- as.POSIXct("2020-02-24-12-00", format="%Y-%m-%d-%H-%M",
>tz="Etc/GMT-1")
>> df1 <- data.frame(data_POSIX=seq(day_1, day_2, by="30 min"))
>> df1$hs <- rnorm(nrows(df1), 40, 10)
>> df1$diff[2:nrow(df1)] <- diff(df1$hs)
>> df1$day <- format(df$data_POSIX,"%y-%m-%d")
>> df2 <- aggregate(diff ~ day, df, sum)
>>
>> Thank you for your help
>> Stefano
>>
>> (oo)
>> --oOO--( )--OOo----------------
>> Stefano Sofia PhD
>> Civil Protection - Marche Region
>> Meteo Section
>> Snow Section
>> Via del Colle Ameno 5
>> 60126 Torrette di Ancona, Ancona
>> Uff: 071 806 7743
>> E-mail: stefano.sofia at regione.marche.it
>> ---Oo---------oO----------------
>>
>> ________________________________
>>
>> AVVISO IMPORTANTE: Questo messaggio di posta elettronica pu?
>contenere informazioni confidenziali, pertanto ? destinato solo a
>persone autorizzate alla ricezione. I messaggi di posta elettronica per
>i client di Regione Marche possono contenere informazioni confidenziali
>e con privilegi legali. Se non si ? il destinatario specificato, non
>leggere, copiare, inoltrare o archiviare questo messaggio. Se si ?
>ricevuto questo messaggio per errore, inoltrarlo al mittente ed
>eliminarlo completamente dal sistema del proprio computer. Ai sensi
>dell?art. 6 della DGR n. 1394/2008 si segnala che, in caso di necessit?
>ed urgenza, la risposta al presente messaggio di posta elettronica pu?
>essere visionata da persone estranee al destinatario.
>> IMPORTANT NOTICE: This e-mail message is intended to be received only
>by persons entitled to receive the confidential information it may
>contain. E-mail messages to clients of Regione Marche may contain
>information that is confidential and legally privileged. Please do not
>read, copy, forward, or store this message unless you are an intended
>recipient of it. If you have received this message in error, please
>forward it to the sender and delete it completely from your computer
>system.
>>
>> --
>> Questo messaggio stato analizzato da Libra ESVA ed risultato non
>infetto.
>> This message was scanned by Libra ESVA and is believed to be clean.
>>
>>
>> [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
>______________________________________________
>R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.
--
Sent from my phone. Please excuse my brevity.