以下代码使用POSIXct格式创建一个包含一个变量timeStamp的10行数据表。
library(data.table)
dt <- data.table(timeStamp = seq( as.POSIXct("2017-07-01 14:51:50"), by=60, len=10))
我想将timeStamp舍入到最近的分钟。
此命令在timeStamp2的每一行中放置一个列表,而不是修改POSIXct变量。
dt[, timestamp2 := round(timeStamp, "mins")]
下面的代码行完成了我想要的(在本例中为圆形)但在数据表中不起作用。
timestamp2 <- round(dt$timeStamp, "mins")
我使用的是data.table版本1.10.4-3和MRAN R版本3.4.1。
答案 0 :(得分:4)
来自?round.POSIXt
:
值
“POSIXlt”或“Date”类的对象。
这意味着round
对象上POSIX
的结果是POSIXlt
个对象。
因此,您需要将round
函数包含在as.POSIXct()
内,以便将其恢复为POSIXct
dt[, timestamp2 := as.POSIXct(round(timeStamp, "mins"))]