尝试将时间戳映射到R数据框中的日期

时间:2013-07-31 18:51:03

标签: r dataframe

我的数据框df的列time包含时间戳和函数from.timestamp

from.timestamp = function(timestamp) {
  return(as.POSIXlt(timestamp/1e3, origin="1970-01-01 00:00:00 GMT"))
}

将时间戳转换为日期类型。如何修改数据框以便将所有时间戳转换为日期?

我的方法

我正在尝试以下方法:

df$time <- apply(as.array(df$time), MARGIN=1, FUN=from.timestamp)

time的结果列条目看起来不像日期,而是一系列数字,例如1.034, 59.000, 23.000, 7.000, 5.000, 113.000, 5.000, 157.000, 1.000

dput(df)给出:

structure(list(time = c(1370674741034, 1372671995085, 1370847555008, 1371456058556, 1372570911379, 1371937835807)), .Names = "time", row.names = 8831395:8831400, class = "data.frame")

1 个答案:

答案 0 :(得分:2)

只做

df$time <- from.timestamp(df$time)

您获得这种奇怪行为的原因是因为POSIXlt对象实际上是列表,其中包含年,月,日等组件。在您的代码中,apply从{{1}收到列表序列,它组合成一个列表。这样做,它会从结果中删除类信息,这就是你看到奇数的原因。这些奇数实际上是POSIXlt对象的各个组成部分,表示日期时间:秒,分钟,小时,日期,月份,年份,工作日,日期。