将POSIXct转换回因子

时间:2016-02-11 14:46:05

标签: r posixct

我已经将一个时间列表转换为POSIXct格式,现在我需要将它们转换回因子,但我无法做到。我该如何解决这个问题?

> data
[1] "2015-12-01 09:14:24 EST" "2015-12-01 17:51:47 EST" "2015-12-02 08:50:52 EST" "2015-12-02 09:38:45 EST"
[5] "2015-12-06 02:30:46 EST" "2015-12-06 14:02:22 EST"

> as.factor(data)
Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?

1 个答案:

答案 0 :(得分:2)

它之所以不起作用,是因为OP有一个POSIXlt类对象。这是list,调用factor会导致错误

 as.factor(as.POSIXlt(v1))
 #Error in sort.list(y) : 'x' must be atomic for 'sort.list'
 #Have you called 'sort' on a list?

但是,如果它是POSIXct对象,则可以正常工作

as.factor(as.POSIXct(v1))
#[1] 2015-12-01 09:14:24
#Levels: 2015-12-01 09:14:24

我们可以将其转换为POSIXct,然后它应该可以正常工作

as.factor(as.POSIXct(as.POSIXlt(v1)))
#[1] 2015-12-01 09:14:24
#Levels: 2015-12-01 09:14:24

我们可以使用classclass

查看str
class(as.POSIXct(v1))
#[1] "POSIXct" "POSIXt" 
class(as.POSIXlt(v1))
#[1] "POSIXlt" "POSIXt" 

数据

 v1 <- "2015-12-01 09:14:24"