【问题标题】:Applying a POSIX date time generator to a data frame将 POSIX 日期时间生成器应用于数据帧
【发布时间】:2016-06-02 13:09:19
【问题描述】:

我有一个以POSIX 格式创建随机日期时间的函数。

rndTime <- function(N, st="2015/01/01", et="2015/12/31"){
  st <- as.POSIXct(as.Date(st))
  et <- as.POSIXct(as.Date(et))
  dt <- as.numeric(difftime(et,st,unit="sec"))
  ev <- sort(runif(N, 0, dt))
  rt <- as.POSIXct(st + ev)
}

当我将其调用到变量中时,我会得到一个日期时间,例如“2015-10-08 15:23:40”,这正是我想要的行为。

rndday = rndTime(1)

但是,当我将其应用于数据框时,我会得到一个 num 作为输出。我有一个简单的框架 midsOver,它有两个字段,ID (factor) 和 recnum(char)

midsOver$T0 <- sapply(midsOver$recnum, FUN = function(x) rndTime(1), simplify = F)

我的输出不是POSIX日期和时间格式,而是查看表格时的1439396281.05214等数字。但是在全局环境 T0 中查看数据框是 1 的列表,它正确显示了 POSIX 格式。

我需要查看数据框中的数据格式。

谢谢

【问题讨论】:

  • 有助于添加midsOver 的样本。目前尚不清楚您是要使用默认的开始日期和结束日期还是使用recnum 作为开始日期。
  • 我想在函数中使用默认的开始和结束日期。当我调用应用程序时,我使用 $recnum 只是为了通过指定框架来避免出错。 $&lt;-.data.frame(*tmp*, "T0", value = list(terminal_id = 1431003992.84843, 中的错误:替换有 2 行,数据有 1
  • 使用midsOver$T0 &lt;- replicate(nrow(midsOver), rndTime(1))

标签: r posix


【解决方案1】:

sapply 函数将 POSIX 类对象转换回数字。要将数字转换回时间对象,请使用:

as.POSIXlt(x, tz = "", origin="1970-01-01")
as.POSIXct(x, tz = "", origin="1970-01-01")

【讨论】:

    猜你喜欢
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    相关资源
    最近更新 更多