我的数据框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")
答案 0 :(得分:2)
只做
df$time <- from.timestamp(df$time)
您获得这种奇怪行为的原因是因为POSIXlt
对象实际上是列表,其中包含年,月,日等组件。在您的代码中,apply
从{{1}收到列表序列,它组合成一个列表。这样做,它会从结果中删除类信息,这就是你看到奇数的原因。这些奇数实际上是POSIXlt对象的各个组成部分,表示日期时间:秒,分钟,小时,日期,月份,年份,工作日,日期。