У меня есть столбец с несколькими значениями, главное из которых содержит дату и имя. Для каждой строки этого фрагмента я хочу проверить остальные строки этого фрагмента, чтобы увидеть, совпадает ли какая-либо из других дат с данными плюс 60 секунд. Если это так, строка может быть помечена как не уникальная и удалена, если нет, строка помечена как уникальная.
Это должно быть сделано, пока все оставшиеся строки не будут помечены как уникальные.
С помощью dplyr и piping я сделал тиббл, но, похоже, не могу его правильно отфильтровать.
# A tibble: 9 x 3
date name unique
<dttm> <chr> <lgl>
1 2019-05-10 17:57:00 Item Name FALSE
2 2019-05-10 17:57:00 Item Name FALSE
3 2019-05-10 18:11:00 Item Name FALSE
4 2019-05-10 18:12:00 Item Name FALSE
5 2019-05-10 18:13:00 Item Name FALSE
6 2019-05-10 18:13:00 Item Name FALSE
7 2019-05-10 18:14:00 Item Name FALSE
8 2019-05-10 18:14:00 Item Name FALSE
9 2019-05-10 18:15:00 Item Name FALSE
Итак, этот тиббл показан предварительным фильтром, все уникальные значения по-прежнему имеют значение false. Теперь по сути, я бы хотел бежать;
lookup <- rawlist %>%
filter(date == date + 60)
В каждой строке строка за строкой, и если результат возвращается с количеством строк выше 0, пометьте строку как не уникальную и удалите ее. Если он возвращается как 0, пометьте его как уникальный.
Очевидно, что это не работает, так как просто сравнивает дату с каждой строкой. Я чувствую, что здесь отсутствует какой-то метод рекурсии.
Еще один улов - если строка уже помечена как уникальная, она не должна рассматриваться как соответствующая функции.
Итак, строки 1 и 2 должны быть помечены как уникальные.
И строки 3 не должно быть, поскольку строка 4 ровно на 60 секунд больше.
Промежуточный тибл должен выглядеть так, но я не могу добраться до этой точки;
# A tibble: 9 x 3
date name unique
<dttm> <chr> <lgl>
1 2019-05-10 17:57:00 Item Name TRUE
2 2019-05-10 17:57:00 Item Name TRUE
3 2019-05-10 18:11:00 Item Name FALSE
4 2019-05-10 18:12:00 Item Name FALSE
5 2019-05-10 18:13:00 Item Name FALSE
6 2019-05-10 18:13:00 Item Name FALSE
7 2019-05-10 18:14:00 Item Name FALSE
8 2019-05-10 18:14:00 Item Name TRUE
9 2019-05-10 18:15:00 Item Name TRUE
Нужный тиббл выглядит так;
# A tibble: 9 x 3
date name unique
<dttm> <chr> <lgl>
1 2019-05-10 17:57:00 Item Name TRUE
2 2019-05-10 17:57:00 Item Name TRUE
8 2019-05-10 18:14:00 Item Name TRUE
9 2019-05-10 18:15:00 Item Name TRUE