将 POSIXct 转换回因子
converting POSIXct back to factor
我已经将时间列表转换为 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?
它不起作用的原因是因为 OP 有一个 POSIXlt
class 对象。它是一个 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
我们可以使用 class
或 str
检查 class
class(as.POSIXct(v1))
#[1] "POSIXct" "POSIXt"
class(as.POSIXlt(v1))
#[1] "POSIXlt" "POSIXt"
数据
v1 <- "2015-12-01 09:14:24"
我已经将时间列表转换为 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?
它不起作用的原因是因为 OP 有一个 POSIXlt
class 对象。它是一个 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
我们可以使用 class
或 str
class
class(as.POSIXct(v1))
#[1] "POSIXct" "POSIXt"
class(as.POSIXlt(v1))
#[1] "POSIXlt" "POSIXt"
数据
v1 <- "2015-12-01 09:14:24"