【问题标题】:converting POSIXct back to factor将 POSIXct 转换回因子
【发布时间】:2016-02-11 14:46:04
【问题描述】:

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

> 数据 [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” [5] “2015-12-06 02:30:46 EST” “2015-12-06 14:02:22 EST” > as.factor(数据) sort.list(y) 中的错误:对于“sort.list”,“x”必须是原子的 您是否在列表中调用了“排序”?

【问题讨论】:

  • 这行得通.. factor(as.POSIXct("2015-12-01 09:14:24 EST")).你能在你的问题中提供dput(head(data))吗?

标签: r posixct


【解决方案1】:

它不起作用的原因是因为 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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-21
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    相关资源
    最近更新 更多