2014-04-28 32 views
10

这是包含我的数据帧中的信息:转换系数为日期/时间中的R

## 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,但它不会让我在指定的时间段内绘制出我想作为一个因子。我不知道接下来要尝试什么...

+0

你需要选择一个答案,所以这个问题将被回答。 –

回答

14

在解析日期时间或日期之前,您需要插入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> 

注意我用的,而不是你的%m/%d/%y%Y-%m-%d。这是现在容易得多感谢anytime包,它自动地从多种类型,包括factor转换,并且这样做无需格式字符串

于2016年1月3日编辑。

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类型。

+0

我认为他已经插入了'as.character'问题是他有一个格式错误imo –

+0

谢谢,我注意到,第二次阅读并扩展我的答案。剩下的问题(你的答案重复)是'as.POSIXlt'转换(无需提取分钟)。 –

7

试试这个

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

这将返回minuteave $分钟为POSIXct对象。

希望这可以帮助你。