这是我的数据框中包含的信息:
## minuteofday: factor w/ 89501 levels "2013-06-01 08:07:00",...
## dDdt: num 7.8564 2.318 ...
## minutes: POSIXlt, format: NA NA NA
我需要将分钟列转换为日期/时间格式:
minuteave$minutes <- as.POSIXlt(as.character(minuteave$minuteofday), format="%m/%d/%Y %H:%M:%S")
我已尝试as.POSIXlt
,as.POSIXct
和as.Date
。这些都没有奏效。有没有人有任何想法。
目标是绘制分钟与dDdt的关系,但它不会让我在指定的时间段内绘制我想要的因素。我不知道下一步该尝试什么...
答案 0 :(得分:20)
在解析为日期时间或日期之前,您需要插入as.character()
。
一个因子将始终作为与其级别对应的数字返回。
您可以通过告知read.csv()
等没有商店作为因素来保存转换因素:stringsAsFactors=FALSE
。您也可以将其设置为全局选项。
将其作为字符后,请确保将格式字符串与您的数据相匹配:
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>
请注意我使用的%Y-%m-%d
,而不是%m/%d/%y
。
2016年1月3日编辑:现在,由于anytime软件包可以自动转换多种类型,包括factor
,所以现在更加容易了。无需格式字符串。
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>
正如您所看到的,我们只是将因子变量提供给anytime()
,然后输出所需的POSIXct类型。
答案 1 :(得分:7)
试试这个
library(lubridate)
minuteave$minutes <- ymd_hms(minuteave$minutes)
这将返回minave $ minutes作为POSIXct对象。
希望这会对你有所帮助。