gpt4 book ai didi

r - 在时间戳的一列上使用 difftime 计算时间的运行差异

转载 作者:行者123 更新时间:2023-12-05 08:57:16 25 4
gpt4 key购买 nike

如何计算连续两行时间戳的时间差(以分钟为单位)并将结果添加到新列中。

我试过这个:

data$hours <- as.numeric(floor(difftime(timestamps(data), (timestamps(data)[1]), units="mins")))

但只能从时间零开始获得差异。

添加了我想要添加的带有“mins”列的示例数据

timestamps                        mins
2013-06-23 00:00:00 NA
2013-06-23 01:00:00 60
2013-06-23 02:00:00 60
2013-06-23 04:00:00 120

最佳答案

您与 [1] 一起使用的代码始终引用时间戳向量的第一个元素。

要执行您想要的操作,您需要查看除第一个元素之外的所有元素减去除最后一个元素之外的所有元素。

mytimes <- data.frame(timestamps=c("2013-06-23 00:00:00",
"2013-06-23 01:00:00",
"2013-06-23 02:00:00",
"2013-06-23 04:00:00"),
mins=NA)
mytimes$mins <- c(NA, difftime(mytimes$timestamps[-1],
mytimes$timestamps[-nrow(mytimes)],
units="mins"))

这段代码的作用是:

  1. 设置一个数据框,以便保持 timestamps 的长度和 mins一样。
  2. 在该数据框中,放入您拥有的时间戳以及您还没有任何分钟的事实(即 NA )。
  3. 选择时间戳中除第一个元素以外的所有元素 mytimes$timestamps[-1]
  4. 选择时间戳中除最后一个元素以外的所有元素 mytimes$timestamps[-nrow(mytimes)]
  5. 减去它们 difftime (因为它们格式正确,您不必先将它们设为 POSIXct 对象)以分钟为单位。 units="mins"
  6. 把 NA 放在前面,因为你的差异比你的行数少一个 c(NA, ...)
  7. 将所有这些放回原始数据框的 mins 列 mytimes$mins <-

关于r - 在时间戳的一列上使用 difftime 计算时间的运行差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34333685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com