Convert Factor to Date/Time in R

自闭症网瘾萝莉.ら 提交于 2019-11-27 22:13:50

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:

R> as.POSIXct("2013-06-01 08:07:00", format="%Y-%m-%d %H:%M:%S")
[1] "2013-06-01 08:07:00 CDT"
R> 

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.

R> as.factor("2013-06-01 08:07:00")
[1] 2013-06-01 08:07:00
Levels: 2013-06-01 08:07:00
R> 
R> library(anytime)
R> anytime(as.factor("2013-06-01 08:07:00"))
[1] "2013-06-01 08:07:00 CDT"
R> 
R> class(anytime(as.factor("2013-06-01 08:07:00")))
[1] "POSIXct" "POSIXt" 
R> 

As you can see we just feed the factor variable into anytime() and out comes the desired POSIXct type.

Try this

library(lubridate) minuteave$minutes <- ymd_hms(minuteave$minutes)

this will return minuteave$minutes as a POSIXct object.

Hope this helps you.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!