[R] how to work with time of day (independent of date)

Daniel Nordlund djnordlund at frontier.com
Fri Oct 30 20:26:00 CET 2015


On 10/30/2015 11:17 AM, Mark Leeds wrote:
> Daniel: Just to complete my solution, here's the code for doing the
> mean. Didn't expect this to take 3 emails !!! Have a good weekend.
>
> temp <- tapply(f$value, f$justtimes, mean)
> finalDF <- data.frame(chrontimes = times(rownames(temp)), values = temp)
> plot(values ~ chrontimes, data = finalDF)
>
>
>
>
>
> On Fri, Oct 30, 2015 at 2:09 PM, Mark Leeds <markleeds2 at gmail.com
> <mailto:markleeds2 at gmail.com>> wrote:
>
>     Hi Daniel: I forgot that you wanted the mean so my code doesn't do
>     exactly what you asked for but you can use jim's code for that part.
>     His substring approach is also good but maybe
>     the chron approach is more general ? Sorry for confusion.
>
>
>
>
>     On Fri, Oct 30, 2015 at 2:07 PM, Mark Leeds <markleeds2 at gmail.com
>     <mailto:markleeds2 at gmail.com>> wrote:
>
>         Hi Daniel:  Assuming that you don't have to deal with time
>         zones, then you can use a chron object which has a seperate
>         field for the time.  See below for how to convert to just times.
>         I sent privately in order to not keep others from sending since
>         there may  be other ways. But, if you're okay with just this,
>         then you can just send to list to close out thread. No credit
>         needed. All the best.
>
>
>         library(chron)
>
>         f <- structure(list(date = structure(1:8, .Label = c("2015-10-29
>         00:50:00",
>         "2015-10-29 09:30:00", "2015-10-29 21:10:00", "2015-10-30 00:50:00",
>         "2015-10-30 09:30:00", "2015-10-30 21:10:00", "2015-10-31 00:50:00",
>         "2015-10-31 10:30:00"), class = "factor"), value = c(88L, 17L,
>         80L, 28L, 23L, 39L, 82L, 79L)), .Names = c("date", "value"),
>         row.names = c(NA,
>         -8L), class = "data.frame")
>
>         print(f)
>
>         f$dateandtimes <-
>         as.chron(as.POSIXct(as.character(f$date),format = "%Y-%m-%d
>         %H:%M:%S"))
>         print(f)
>
>         f$justtimes <- times(as.numeric(f$dateandtimes) %% 1)
>         print(f)
>
>         plot(value ~ justtimes, data = f)
>
>         On Fri, Oct 30, 2015 at 1:35 PM, Daniel Nordlund
>         <djnordlund at frontier.com <mailto:djnordlund at frontier.com>> wrote:
>
>             I have a data frame with date/times represented as
>             charaacter strings and and a value at that date/time.  I
>             want to get the mean value for each time of day, across
>             days, and then plot time of day on the x-axis and means on
>             the y-axis.  R doesn't appear to have a built-in time of day
>             time type (independent of a date), unless I have missed
>             something. What is the best way to create a time variable so
>             that I can aggregate and plot by time of day, with time
>             labelled in HH:MM format.  My current approach is to convert
>             all date/times to the same date.  I can then manage the rest
>             of what I want with ggplot2.  But I am  wondering if there
>             is an easier/better way to do deal with time of day.
>
>             Here is a sample data frame.
>
>             df <- structure(list(date = structure(1:8, .Label =
>             c("2015-10-29 00:50:00",
>             "2015-10-29 09:30:00", "2015-10-29 21:10:00", "2015-10-30
>             00:50:00",
>             "2015-10-30 09:30:00", "2015-10-30 21:10:00", "2015-10-31
>             00:50:00",
>             "2015-10-31 10:30:00"), class = "factor"), value = c(88L, 17L,
>             80L, 28L, 23L, 39L, 82L, 79L)), .Names = c("date", "value"),
>             row.names = c(NA,
>             -8L), class = "data.frame")
>
>
>             Any suggestions appreciated.
>
>             Dan
>
>             --
>             Daniel Nordlund
>             Bothell, WA  USA
>
>             ______________________________________________
>             R-help at r-project.org <mailto: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.
>
>
>
>

Thanks to all who responded (both on and off list).  Several useful 
suggestions were presented.  It looks like using the chron package may 
get me what I want, but I will play with all the solutions to see what 
works best for me.


Dan

-- 
Daniel Nordlund
Bothell, WA  USA



More information about the R-help mailing list