Я пытаюсь создать флаг для определения пробелов в данных временных отметок более 2 дней. Этот вопрос почти выполняет то, что мне нужно , но мои данные о времени находятся в одном столбце, а не в начале и конце столбца.Также я использую data.table
.Прямо сейчас я пытаюсь с diff()
, но я думаю, что это, вероятно, может быть достигнуто с lag()
, как в связанном вопросе.
Пока у меня есть это:
library(data.table)
myID <- c(1,1,1,1,1,1,2,2,2,2,2,2)
BST <- c("2017-06-01 00:00:01", "2017-06-01 00:00:02",
"2017-06-02 00:00:01", "2017-06-02 00:00:02",
"2017-06-03 00:00:01", "2017-06-03 00:00:02",
"2017-06-01 00:00:01", "2017-06-01 00:00:02",
"2017-06-05 00:00:01", "2017-06-05 00:00:02",
"2017-06-09 00:00:01", "2017-06-09 00:00:02")
dt1 <- data.table(myID, BST)
# Create gapFlag
dt1 <- dt1[, gapFlag := lapply(.SD, function(x) which(as.duration(diff(dt1$BTS))/ddays(1) > 2)), by = myID]
Но этокажется, работает бесконечно ... мой фактический data.table превышает 10 миллионов строк.
Мой желаемый результат выглядит следующим образом (с дополнительным бонусом подсчета пробелов в gapCount):