【发布时间】:2014-06-30 19:47:34
【问题描述】:
我正在将一个数据框导入 R,但 R 没有将带有日期的列识别为日期格式。
> mydata[1,1]
[1] 1/1/2003 0:00
216332 Levels: 1/1/2003 0:00 1/1/2003 0:15 1/1/2003 0:30 ... 9/9/2007 9:55
我试过了:
> as.Date(mydata[1,1], format = "%m/%d/%Y %H:%M")
[1] "2003-01-01"
但后来我错过了时间。
如果我这样做了
> strptime(mydata[2,1], format = "%m/%d/%Y %H:%M")
[1] "2003-01-01 00:15:00 EST"
我得到了我需要的东西。但是,当我将此结果分配给我的变量时它不起作用
> mydata[,1] <- strptime(mydata[,1], format = "%m/%d/%Y %H:%M")
Warning message:
In `[<-.data.frame`(`*tmp*`, , 1, value = list(sec = c(0, 0, 0, :
provided 11 variables to replace 1 variables
我的问题与Set time value into data frame cell的问题类似
虽然解释得很好,但在花了一些时间阅读和尝试之后,我无法自己弄清楚。
【问题讨论】:
-
我可能会在这里错过一些东西,但为什么不选择
as.POSIXct?mydata[ , 1] <- as.POSIXct(mydata[ , 1], format = "%m/%d/%Y %H:%M") -
它返回一条警告消息:
Warning message: In[(*tmp*, iseq, value = 1191212100) : invalid factor level, NA generated。我可以按照 rrs 的建议使用 lubridate 包解决问题。不过感谢您的评论。 -
那么您的数据中有一些特殊性未在您的示例中显示。这适用于一致格式的日期时间:
mydata <- data.frame(time = factor(c("1/14/2003 0:30", "9/19/2007 9:55")));str(mydata);mydata[, 1] <- as.POSIXct(mydata[,1], format = "%m/%d/%Y %H:%M");str(mydata).
标签: r date dataframe type-conversion