R 数据表中的 PosixCT 变量

标签 r data.table posixct

以下代码创建一个 10 行数据表,其中包含一个变量 timeStamp,采用 POSIXct 格式。

library(data.table)
dt <- data.table(timeStamp = seq( as.POSIXct("2017-07-01 14:51:50"), by=60, len=10))

我想将时间戳四舍五入到最接近的分钟。

此命令在 timeStamp2 的每一行中放置一个列表,而不是修改后的 POSIXct 变量。

dt[, timestamp2 := round(timeStamp, "mins")]

下面的代码行执行了我想要的操作(在此示例中进行了舍入),但在数据表中不起作用。

timestamp2 <- round(dt$timeStamp, "mins")

我使用的是 data.table 版本 1.10.4-3 和 MRAN R 版本 3.4.1。

最佳答案

来自?round.POSIXt:

Value

An object of class "POSIXlt" or "Date".

这意味着对 POSIX 对象进行 round 的结果是一个 POSIXlt 对象。

因此,您需要将 round 函数包装在 as.POSIXct() 中,以使其返回到 POSIXct

dt[, timestamp2 := as.POSIXct(round(timeStamp, "mins"))]

关于R 数据表中的 PosixCT 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47403265/

相关文章:

r - 如何在每个组内创建滞后变量?

r - data.table 的表达式语法 := in R

R - 使用 HHMMSS 格式将日期和时间字段转换为 POSIXct

r - POSIXct 的奇怪转换问题

r - 如何使用ggplot在直方图上叠加任意参数分布?

r - 如何在没有任何连接条件的情况下组合R中具有相同行数但不同列的两个数据集?

r - Stringr:从 data.frame 列中的字符串中提取所有匹配项。数据框和搜索字符串的向量非常大(> 10k)

r - 如何在R中没有列名的情况下获取矩阵元素?

r - 在函数内交叉连接 data.table

r - 将数据帧中的字符转换为时间戳