为什么每个组的 difftime 输出不是从零开始的

  • 本文关键字:difftime 输出 从零开始 r
  • 更新时间 :
  • 英文 :


我有一个数据集,包括user_ids、日期时间和索引(显示每个user_id的活动编号(。我必须找到每个活动的时差。因此,对于唯一活动,此新列 (walk_time( 应以 NA 开头,并在该索引(活动(的所有行中具有时差值。但是,我使用我的代码,但它不考虑group_by(索引(。这是我的代码和我的代码输出。 p.s.:我根据我在 Stack Overflow 中的上一篇文章的回复在 R 中使用了 dput((,并将我的数据复制并粘贴到这里。如果我应该以其他方式携带我的数据,请告诉我。 我想计算连续时间数据之间的差异,但我必须对它们进行分组。

sample_DF$walk_mins <- as.numeric("")
sample_DF <- sample_DF %>%
group_by(index.y) %>%
mutate(walk_mins = as.numeric(difftime(DATETIME2 , lag(DATETIME2) , units = "mins")))

user_id DATETIME2指数walk_mins 1 41 2019-06-02 20:44:00 1 NA 2 41 2019-06-03 16:46:00 2 1202 3 41 2019-06-03 16:50:00 2 4 4 41 2019-06-03 20:43:00 3 233 5 41 2019-06-03 20:44:00 3 1 6 41 2019-06-03 21:00:00 4 16 7 41 2019-06-04 13:28:00 5 988 8 41 2019-06-04 13:29:00 5 1 9 41 2019-06-04 13:30:00 5 1 10 41 2019-06-04 13:31:00 5 1 11 41 2019-06-04 13:32:00 5 1 12 41 2019-06-04 13:34:00 5 2 13 41 2019-06-04 13:35:00 5 1 14 41 2019-06-04 13:36:00 5 1 15 41 2019-06-04 17:31:00 6 235 16 41 2019-06-04 18:46:00 7 75 17 41 2019-06-04 19:13:00 8 27 18 41 2019-06-04 19:37:00 9 24 19 41 2019-06-04 19:55:00 10 18 20 41 2019-06-04 20:13:00 11 18

如果我们需要从 0 开始difftime,请将"滞后"中的default也更改为"DATETIME2"first。 默认情况下,它是NA. 此外,根据显示的输出,plyr::mutate似乎掩盖了dplyr::mutate

library(dplyr)
sample_DF <- sample_DF %>%
group_by(index.y) %>%
dplyr::mutate(walk_mins = as.numeric(difftime(DATETIME2 ,
lag(DATETIME2, default = first(DATETIME2)) , units = "mins")))

最新更新