将POSIX日期时间生成器应用于数据框

时间:2016-06-02 13:09:20

标签: r posix

我有一个以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)
}

当我将其称为变量时,我会得到一个约会时间,例如&#34; 2015-10-08 15:23:40&#34;这正是我想要的行为。

rndday = rndTime(1)

然而,当我将它应用于数据帧时,我得到一个num作为输出。我有一个简单的框架midsOver,它有两个字段,ID(因子)和recnum(char)

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

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

我需要在数据框中看到数据格式。

谢谢

1 个答案:

答案 0 :(得分:0)

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

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