14

这是我的数据框中包含的信息:

## 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.POSIXltas.POSIXctas.Date。这些都没有奏效。有人有想法吗。

目标是绘制分钟与 dDdt 的关系,但它不会让我在我想要作为一个因素的指定时间段内进行绘制。我不知道接下来要尝试什么...

4

2 回答 2

25

您需要as.character()在解析之前插入一个日期时间或日期。

一个因素总是首先作为与其级别相对应的数字返回。

read.csv()您可以通过将etc 告知 no store 作为一个因素 来保存从因素到字符的转换: 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 日编辑:现在这要容易得多,这要归功于随时包,它可以自动从多种类型转换,包括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 类型。

于 2014-04-28T18:53:52.210 回答
9

试试这个

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

这将返回 minuteave$minutes 作为 POSIXct 对象。

希望这对您有所帮助。

于 2014-04-29T09:46:19.023 回答