我想转换因子到目前为止,因素是这样的:2011-05-05:16:30:04.466

时间:2017-09-07 14:51:09

标签: r

我尝试使用润滑包和as.Date(),但都显示错误:

# the factor
> x
[1] '2011-05-05:16:30:04.466   '
873 Levels: '2011-05-05:16:30:04.466   ' ... '2017-08-10:20:05:51.406967'

# try 1
> as.Date(x, format = "%m/%d/%Y")
[1] NA

# try 2
> xx <- mdy(x)
Warning message:
All formats failed to parse. No formats found. 

> xx
[1] NA

> xx <- mdy_hms(x)
Warning message:
All formats failed to parse. No formats found. 
有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

要添加Jason Clark的其他答案,还有as.POSIXct,如果你想保持时间。

getOption("digits.secs")
#NULL

options(digits.secs = 6)

x <- factor('2011-05-05:16:30:04.466')
y <- as.POSIXct(x, format = "%Y-%m-%d:%H:%M:%OS")
y
#[1] "2011-05-05 16:30:04.466 BST"

class(y)
#[1] "POSIXct" "POSIXt"

答案 1 :(得分:0)

看起来您的问题可能是格式。 as.Date中的默认格式是“%Y-%m-%d”,它似乎照顾了这个例子。

> as.Date(as.factor('2011-05-05:16:30:04.466   '), format = "%m/%d/%Y")
[1] NA
> as.Date(as.factor('2011-05-05:16:30:04.466   '))
[1] "2011-05-05"
> as.Date(as.factor('2011-05-05:16:30:04.466   '), format = "%Y-%m-%d")
[1] "2011-05-05"