【问题标题】:R groupby function in calculating difference between timeR groupby函数计算时间差
【发布时间】:2018-07-16 14:50:39
【问题描述】:

我不确定如何找到通过相同 ID 计算时间组之间差异的最佳方法。 数据集如下:

ID:{1,1,2,2}
time:{13:44:07,13:44:09,13:44:34,13:45:44}

我想产生像L这样的输出

ID:{1,2}
timestamp:{2s,70s}

我已经将我的时间格式更改为 POSIXct,当我尝试使用如下代码时:

data%>%
group_by(ID)%>%
mutate(timestamp=difftime(time,lag(time)))

它显示了错误

Column `time` is a date/time and must be stored as POSIXct, not POSIXlt

【问题讨论】:

  • 有谁知道如何解决这个问题?非常感谢!

标签: r group-by timestamp


【解决方案1】:

我们可以在使用as.POSIXct 转换为日期时间后使用difftime(根据OP 的帖子,可以使用strptime 将其转换为与tidyverse 不兼容的POSIXlt 类)

library(dplyr)
data %>%
   mutate(timeN = as.POSIXct(time, format = '%H:%M:%S')) %>%
   group_by(ID) %>%
   summarise(timediff = difftime(first(timeN), last(timeN), unit = 'sec'))
# A tibble: 2 x 2
#     ID timediff
#  <dbl> <time>  
#1     1 -2      
#2     2 -70     

数据

data <- structure(list(ID = c(1, 1, 2, 2), time = c("13:44:07", "13:44:09", 
"13:44:34", "13:45:44")), .Names = c("ID", "time"), row.names = c(NA, 
-4L), class = "data.frame")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 2019-06-17
    • 2017-05-21
    相关资源
    最近更新 更多