[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