R语言 如何删除时间序列的前10个数据

rkue9o1l  于 8个月前  发布在  其他
关注(0)|答案(1)|浏览(108)

我有GPS跟踪数据,看起来像这样

timestamp             individual
1    02/12/2020 03:22:10   A
2    02/12/2020 03:22:11   A
3    02/12/2020 03:22:12   A
4    02/12/2020 03:43:40   A
5    02/12/2020 03:43:41   A
6    02/12/2020 03:43:43   A
7    02/12/2020 03:43:45   A
8    02/12/2020 03:43:47   A
9    02/12/2020 03:43:48   A
10   02/12/2020 03:43:50   A
11   02/12/2020 03:43:52   A
12   02/12/2020 03:43:53   A

它与每隔1-3秒发送位置的跟踪器一起工作,并且彼此相距很远(>10秒差异)的时间戳指示一系列新的高频数据(例如,第3行到第4行)。我想删除每个时间序列的前10秒(在本例中为第4行到第10行),包括该序列的第一个数据点,但保留(11和12)之后的点。我该怎么做?
预期输出如下所示:

timestamp             individual
11   02/12/2020 03:43:52   A
12   02/12/2020 03:43:53   A
b0zn9rqh

b0zn9rqh1#

这么做

library(dplyr)
library(lubridate)

dat %>% 
  mutate(timestamp = parse_date_time(timestamp, orders = "dmy HMS"),
         group = 1 + cumsum(timestamp - lag(timestamp, default = first(timestamp)) > 10)) %>% 
  group_by(group) %>% 
  filter(timestamp - first(timestamp) > 10) %>% 
  ungroup() %>% 
  select(-group)
#> # A tibble: 2 × 2
#>   timestamp           individual
#>   <dttm>              <chr>     
#> 1 2020-12-02 03:43:52 A         
#> 2 2020-12-02 03:43:53 A

样本数据

dat <- structure(list(timestamp = c("02/12/2020 03:22:10", "02/12/2020 03:22:11", 
                                    "02/12/2020 03:22:12", "02/12/2020 03:43:40", "02/12/2020 03:43:41", 
                                    "02/12/2020 03:43:43", "02/12/2020 03:43:45", "02/12/2020 03:43:47", 
                                    "02/12/2020 03:43:48", "02/12/2020 03:43:50", "02/12/2020 03:43:52", 
                                    "02/12/2020 03:43:53"), 
                      individual = rep("A", 12)), 
                 class = "data.frame", row.names = c("1", 
                                                     "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"))

dat
#>              timestamp individual
#> 1  02/12/2020 03:22:10          A
#> 2  02/12/2020 03:22:11          A
#> 3  02/12/2020 03:22:12          A
#> 4  02/12/2020 03:43:40          A
#> 5  02/12/2020 03:43:41          A
#> 6  02/12/2020 03:43:43          A
#> 7  02/12/2020 03:43:45          A
#> 8  02/12/2020 03:43:47          A
#> 9  02/12/2020 03:43:48          A
#> 10 02/12/2020 03:43:50          A
#> 11 02/12/2020 03:43:52          A
#> 12 02/12/2020 03:43:53          A

相关问题