首页 文章

将POSIXct转换回因子

提问于
浏览
2

我已经将一个时间列表转换为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 回答

  • 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
    

    我们可以使用 classstr 检查 class

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

    数据

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

相关问题