[R] how to work with time of day (independent of date)
Clint Bowman
clint at ecy.wa.gov
Fri Oct 30 20:30:22 CET 2015
Bill,
Your final words, "changes in spring and fall" reminds me of a problem
I have yet to solve. Most of my data is logged in standard time (no
daylight times) but often I see the note "daylight time encountered
switching to UTC" even when I've specified "tz="PST".
I hope I've been missing something simple--any suggestions?
TIA
Clint
Clint Bowman INTERNET: clint at ecy.wa.gov
Air Quality Modeler INTERNET: clint at math.utah.edu
Department of Ecology VOICE: (360) 407-6815
PO Box 47600 FAX: (360) 407-7534
Olympia, WA 98504-7600
USPS: PO Box 47600, Olympia, WA 98504-7600
Parcels: 300 Desmond Drive, Lacey, WA 98503-1274
On Fri, 30 Oct 2015, William Dunlap wrote:
> You can use difftime objects to get the amount of time since the start of
> the current day. E.g.,
> > dateTime <- as.POSIXlt( 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"))
> > date <- trunc(dateTime, units="days")
> > sinceMidnight <- difftime(dateTime, date, units="mins")
> > sinceMidnight
> Time differences in mins
> [1] 50 570 1270 50 570 1270 50 630
>
> I use difftime(x, y, units=) instead of the similar x-y because the latter
> chooses
> the units based on how far apart x and y are, while the former gives me
> consistent
> units:
> > dateTime[1] - date[1]
> Time difference of 50 mins
> > as.numeric(.Last.value)
> [1] 50
> > dateTime[5:6] - date[5:6]
> Time differences in hours
> [1] 9.50000 21.16667
> > as.numeric(.Last.value)
> [1] 9.50000 21.16667
>
> Depending on what you are using this for, you might want to compute time
> since 3am
> of the current day so you don't get discontinuities for most times when the
> time
> changes in spring and fall.
>
>
>
> Bill Dunlap
> TIBCO Software
> wdunlap tibco.com
>
> On Fri, Oct 30, 2015 at 10:35 AM, Daniel Nordlund <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 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.
>>
>
> [[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.
>
More information about the R-help
mailing list