Как я могу удалить точки ночного времени из данных GPS-трека в R?

#r #time #gps #conditional

#r #время #gps #условный

Вопрос:

У меня есть некоторые трекинги, похожие на приведенный ниже пример. Я хотел бы иметь возможность удалять строки, которые встречаются до 06:00 и после 18:00, то есть значения ночного времени.

 tracks <- read.table(text = "
             05/04/2015 16:04,  53.3854 ,   -6.29421
             05/04/2015 17:17,  53.38464,   -6.29412
             05/04/2015 17:33,  53.38457,   -6.29409
             05/04/2015 17:49,  53.38463,   -6.29418
             05/04/2015 19:20,  53.38458,   -6.29408
             05/04/2015 19:49,  53.38452,   -6.29394
             05/04/2015 20:19,  53.38464,   -6.29411
             05/04/2015 21:20,  53.38441,   -6.29421
             06/04/2015 07:13,  53.38459,   -6.29414
             06/04/2015 08:30,  53.3846,    -6.29414
             06/04/2015 16:56,  53.38458,   -6.29413
             06/04/2015 17:05,  53.38469,   -6.29416
             06/04/2015 17:13,  53.38464,   -6.29409
             06/04/2015 17:26,  53.38463,   -6.29412
             06/04/2015 17:39,  53.38463,   -6.29411
             06/04/2015 19:51,  53.38465,   -6.29411
             06/04/2015 21:29,  53.38451,   -6.29415"                 
, header = F, sep = ",")
  

Ответ №1:

Вы можете сделать это, сначала извлекая часы и минуты из V1 , а затем использовать это для подмножества строк track :

 hm <- strftime(as.POSIXct(tracks$V1, format="%m/%d/%Y %H:%M"), "%H:%M")
tracks <- tracks["06:00" < hm amp; hm < "18:00",]
##                                      V1       V2       V3
##1                       05/04/2015 16:04 53.38540 -6.29421
##2                       05/04/2015 17:17 53.38464 -6.29412
##3                       05/04/2015 17:33 53.38457 -6.29409
##4                       05/04/2015 17:49 53.38463 -6.29418
##9                       06/04/2015 07:13 53.38459 -6.29414
##10                      06/04/2015 08:30 53.38460 -6.29414
##11                      06/04/2015 16:56 53.38458 -6.29413
##12                      06/04/2015 17:05 53.38469 -6.29416
##13                      06/04/2015 17:13 53.38464 -6.29409
##14                      06/04/2015 17:26 53.38463 -6.29412
##15                      06/04/2015 17:39 53.38463 -6.29411
  

Ответ №2:

Решение lubdridate :

 library(lubridate)

time <- dmy_hm(tracks$V1)

tracks[!(hour(time) > 18 | hour(time)< 6),]

##                                      V1       V2       V3
##1                       05/04/2015 16:04 53.38540 -6.29421
##2                       05/04/2015 17:17 53.38464 -6.29412
##3                       05/04/2015 17:33 53.38457 -6.29409
##4                       05/04/2015 17:49 53.38463 -6.29418
##9                       06/04/2015 07:13 53.38459 -6.29414
##10                      06/04/2015 08:30 53.38460 -6.29414
##11                      06/04/2015 16:56 53.38458 -6.29413
##12                      06/04/2015 17:05 53.38469 -6.29416
##13                      06/04/2015 17:13 53.38464 -6.29409
##14                      06/04/2015 17:26 53.38463 -6.29412
##15                      06/04/2015 17:39 53.38463 -6.29411