fork download
  1. library(dplyr)
  2.  
  3. # create demo data
  4. df <- data.frame(
  5. id = c(rep("A", 3), rep("B", 5)),
  6. datetime = c(as.POSIXct("2012/10/11 20:00"),
  7. as.POSIXct("2012/10/11 23:00"),
  8. as.POSIXct("2012/10/12 03:00"),
  9. as.POSIXct("2012/12/11 05:00"),
  10. as.POSIXct("2012/12/11 11:05"),
  11. as.POSIXct("2012/12/11 13:00"),
  12. as.POSIXct("2012/12/11 18:00"),
  13. as.POSIXct("2012/12/11 20:00")
  14. ),
  15. expdata = 1:8
  16. )
  17.  
  18. col_names <- colnames(df)
  19.  
  20. # filter
  21. df_filtered <- df %>%
  22. group_by(id) %>%
  23. arrange(datetime) %>%
  24. mutate(timediff = as.numeric(datetime-lag(datetime), units = 'hours'),
  25. condition_meet = ifelse(is.na(timediff) | timediff > 6, 1, 0),
  26. condition_meet_id = cumsum(condition_meet)
  27. ) %>%
  28. group_by(id, condition_meet_id) %>%
  29. filter(row_number() == max(row_number())) %>%
  30. ungroup() %>%
  31. select_at(col_names)
Success #stdin #stdout #stderr 0.49s 51096KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Attaching package: ‘dplyr’

The following objects are masked from ‘package:stats’:

    filter, lag

The following objects are masked from ‘package:base’:

    intersect, setdiff, setequal, union

Error in function_list[[k]](value) : could not find function "select_at"
Calls: %>% ... eval -> _fseq -> freduce -> withVisible -> <Anonymous>
Execution halted