This is the information contained within my dataframe:
## minuteofday: factor w/ 89501 levels "2013-06-01 08:07:00",...
## dDdt: num 7.8564 2.318 ...
## minutes: POSIXlt, format: NA NA NA
I need to convert the minute of day column to a date/time format:
minuteave$minutes <- as.POSIXlt(as.character(minuteave$minuteofday), format="%m/%d/%Y %H:%M:%S")
I've tried as.POSIXlt
, as.POSIXct
and as.Date
. None of which worked. Does anyone have ANY thoughts.
The goal is to plot minutes vs. dDdt, but it won't let me plot in the specified time period that I want to as a factor. I have no idea what to try next...
Try this
library(lubridate) minuteave$minutes <- ymd_hms(minuteave$minutes)
this will return minuteave$minutes as a POSIXct object.
Hope this helps you.
You need to insert an
as.character()
before parsing as a Datetime or Date.A factor will always come back first as a number corresponding to its level.
You can save the conversion from factor to character by telling
read.csv()
etc to no store as a factor:stringsAsFactors=FALSE
. You can also set that as a global option.Once you have it as character, make sure you match the format string to your data:
Note the
%Y-%m-%d
I used, as opposed to your%m/%d/%y
.Edit on 3 Jan 2016: This is now much easier thanks to the anytime package which automagically converts from many types, including
factor
, and does so without requiring a format string.As you can see we just feed the factor variable into
anytime()
and out comes the desired POSIXct type.