1

我有一个包含时间戳和函数df的列的数据框timefrom.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")
4

1 回答 1

2

做就是了

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

你得到奇怪行为的原因是因为POSIXlt对象实际上是列表,包含年、月、日等的组件。在你的代码中,applyfrom.timestamp一系列列表中接收,它组合成一个列表。这样做时,它会从结果中去除类信息,这就是您看到奇数的原因。这些奇数实际上是代表该日期时间的 POSIXlt 对象的各个组成部分:秒、分钟、小时、月中的某天、月、年、工作日、年中的某天。

于 2013-08-01T02:36:46.610 回答