Как проверить, является ли группа времени последовательной или нет в R - PullRequest
0 голосов
/ 10 октября 2018

Если у меня есть эти данные

Group,start_time
1,9:05:00
1,9:07:00
1,19:09:00
1,9:00:00
1,9:00:00
1,9:02:00
2,9:05:00
2,9:07:00
2,19:09:00
2,9:00:00
2,9:00:00
2,9:02:00

, и я хотел бы проверить данные в столбце, как показано ниже.Как я могу это сделать?Спасибо

Group,start_time, check
1,9:05:00,True
1,9:07:00,True
1,19:09:00, True
1,9:00:00,False
1,9:00:00,False
1,9:02:00,False
2,9:05:00,True
2,9:07:00,True
2,19:09:00,True
2,9:00:00,False
2,9:00:00,False
2,9:02:00,False

1 Ответ

0 голосов
/ 10 октября 2018

Вот возможное решение:

df = structure(list(Group = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L, 2L), start_time = structure(c(4L, 5L, 1L, 2L, 2L, 3L, 
4L, 5L, 1L, 2L, 2L, 3L), .Label = c("19:09:00", "9:00:00", "9:02:00", 
"9:05:00", "9:07:00"), class = "factor")), class = "data.frame", row.names = c(NA, -12L))

library(dplyr)

df %>%
  group_by(Group) %>%
  mutate(check = as.numeric(gsub(":","",start_time)) >= cummax(as.numeric(gsub(":","",start_time)))) %>%
  ungroup() 

# # A tibble: 12 x 3
#   Group start_time check
#   <int> <fct>      <lgl>
# 1     1 9:05:00    TRUE 
# 2     1 9:07:00    TRUE 
# 3     1 19:09:00   TRUE 
# 4     1 9:00:00    FALSE
# 5     1 9:00:00    FALSE
# 6     1 9:02:00    FALSE
# 7     2 9:05:00    TRUE 
# 8     2 9:07:00    TRUE 
# 9     2 19:09:00   TRUE 
#10     2 9:00:00    FALSE
#11     2 9:00:00    FALSE
#12     2 9:02:00    FALSE

Я предполагаю, что FALSE дела - это те, к которым мы, кажется, обращаемся назад во времени.

Для сравнения времен Iудалите :, и я создаю число, используя оставшиеся (числовые) символы.

...