当前位置: 首页 > 知识库问答 >
问题:

按组划分的日期[i 1]和日期[i]之间的时间差

董哲
2023-03-14

我想按组计算tab$date[i1]和tab$date[I]之间的时差(以小时为单位)。这里是我的代码:

setDT(tab)
system.time(tab <- tab[ , diffTime := c(0,diff(date, units="hours")), by="ID"])
tab$diffTime <- round(tab$diffTime)

问题是我同时获得了小时、分钟和秒:

Date                   DiffTime
2012-03-05 01:00:36    0
2012-03-05 03:00:35    2
2012-03-05 05:01:05    2
...
2010-01-29 21:01:00    0
2010-01-29 22:01:01    60
2010-01-29 23:01:12    60
...
2012-02-13 05:00:34    0
2012-02-13 16:01:06    39632
2012-02-14 03:00:47    39581

日期是POSIXct数据。我怎样才能只获得小时数?

共有1个答案

刘海
2023-03-14

我们可以使用<code>difftime</code>并将<code>单位</code<指定为“小时”。

library(data.table)
setDT(tab)[, DiffTime := c(0, round(difftime(date[-1L], date[-.N], 
                                 units='hours'))), by= ID]
tab
#   ID                date DiffTime
#1:  1 2012-03-05 01:00:36        0
#2:  1 2012-03-05 03:00:35        2
#3:  1 2012-03-05 05:01:05        2
#4:  2 2010-01-29 21:01:00        0 
#5:  2 2010-01-29 22:01:01        1
#6:  2 2010-01-29 23:01:12        1
tab <- data.frame(ID= rep(1:2, each=3),
  date= as.POSIXct(c('2012-03-05 01:00:36', '2012-03-05 03:00:35', 
  '2012-03-05 05:01:05', '2010-01-29 21:01:00', '2010-01-29 22:01:01',
  '2010-01-29 23:01:12'), format='%Y-%m-%d %H:%M:%S'))
 类似资料:
  • 问题内容: 我希望得到一些帮助,以帮助我编写一些自己编写的SQL语句。 我有一张数据表: 我需要获得以下信息: 换句话说,按日期划分日期范围。在SQL中甚至可能吗? 我的数据库是Oracle 11G R2,由于某些情况,我担心不能使用PL / SQL。 问题答案: 可以在SQL中执行此操作。有两个技巧。首先是生成一系列数字,您可以使用进行CTE处理。 第二个是将正确的逻辑放在一起以扩展日期,同时保

  • 问题内容: 我有一列希望按日期时间分组而不创建新列。这可能是我当前的代码不起作用吗? 问题答案: 正如@JosephCottam所建议的 过时的用途 您可以将索引设置为并使用

  • 问题内容: 我想使用JSON从Python发送序列化形式的datetime.datetime对象,并使用JSON在JavaScript中反序列化。做这个的最好方式是什么? 问题答案: 你可以在中添加参数来处理此问题: 这是格式。 更全面的默认处理程序功能:

  • 让我一起学习一个新的内建对象:日期(Date)。该对象存储日期和时间,并提供了日期/时间的管理方法。 例如,我们可以使用它来存储创建/修改时间,或者用来测量时间,再或者仅用来打印当前时间。 创建 创建一个新的 Date 对象,只需要调用 new Date(),在调用时可以带有下面这些参数之一: new Date() 不带参数 —— 创建一个表示当前日期和时间的 Date 对象: let now =

  • 日期和时间 日期、时间、时间戳的值支持ISO 8601格式,格式还包含了时区: CALL TIMESTAMP '2008-01-01 12:00:00+01:00'; 如果未设置时区,将使用系统中当前的时区。日期和时间信息存储在 H2 数据库文件,不包含时区信息。如果数据库打开使用另一个系统时区,日期和时间将是相同的。这意味着如果你存储的值“2000-01-01 12:00:00”在一个时区,然

  • PHP 中 DateTime 类的作用是在你读、写、比较或者计算日期和时间时提供帮助。除了 DateTime 类之外,PHP 还有很多与日期和时间相关的函数,但 DateTime 类为大多数常规使用提供了优秀的面向对象接口。它还可以处理时区,不过这并不在这篇简短的介绍之内。 在使用 DateTime 之前,通过 createFromFormat() 工厂方法将原始的日期与时间字符串转换为对象或使用