Предположим, у меня есть dataframe следующим образом,Фильтр для DateTimes, что имеет разрыв больше, чем или равное число - R
ID date difference
1 5/1/2016 4:46 NA
2 5/1/2016 4:55 9
3 5/1/2016 5:01 6
4 5/1/2016 5:09 8
5 5/1/2016 5:16 7
6 5/1/2016 5:24 8
7 5/1/2016 5:31 7
8 5/1/2016 5:40 9
9 5/1/2016 5:46 6
10 5/1/2016 5:49 3
11 5/1/2016 5:54 5
12 5/1/2016 5:57 3
13 5/1/2016 6:10 13
Здесь я хочу, чтобы фильтровать записи, которые имеют разницу во времени больше или равна до 9. Я хочу отфильтровать две записи до того, как значение разницы времени равно 9 и одна запись после этого. В основном я хочу анализировать тенденции, когда разница во времени превышает 9 минут. Поэтому я хочу сделать две записи до нее и одну запись после этого, чтобы у меня было 4 записи для каждого блока временных записей для исследования.
Я могу фильтровать его непосредственно с одной записью,
data %>% filter(difference >= 9)
Но я хочу взять две записи перед ней и одну запись после его расследования. В идеале мой выход должен быть, как
ID date difference
1 5/1/2016 4:46 NA
2 5/1/2016 4:55 9
3 5/1/2016 5:01 6
6 5/1/2016 5:24 8
7 5/1/2016 5:31 7
8 5/1/2016 5:40 9
9 5/1/2016 5:46 6
11 5/1/2016 5:54 5
12 5/1/2016 5:57 3
13 5/1/2016 6:10 13
Где, когда разница во времени больше или равно 9, я получаю два до записи и один после записи.
Может кто-нибудь дать мне некоторое представление, как подойти к этому?
Благодаря
Спасибо за это. Это работает. Но если я хочу сгруппировать по какой-либо переменной ранее и сделать это рекурсивно, как я могу это сделать? – haimen
для ex, я не хочу получать предыдущие дни как предыдущие записи, поэтому я группирую их по дням, в этом случае мне нужны только записи в конкретном кэсе, и я не хочу идти на записи предыдущего дня. Поэтому я группирую его каждый день здесь, а затем хочу это сделать. – haimen
В этом случае вы можете попробовать: 'dt [, .SD [Reduce (" | ", c (shift (разность> = 9, n = 0: 1, type =" lag "), shift (разность> = 9, n = 1: 2, type = "lead")))], by = list (ID)] '. где 'ID' - групповая переменная. – Psidom