у меня есть данные, что выглядит следующим образом:Dplyr или data.table консолидации последовательных строк в сгруппированных данных на основе значения в другом столбце
ID CLASS START END
100 GA 3-Jan-15 1-Feb-15
100 G 1-Feb-15 22-Feb-15
100 GA 28-Feb-15 17-Mar-15
100 G 1-Apr-15 8-Apr-15
100 G 10-Apr-15 18-Apr-15
200 FA 3-Jan-14 1-Feb-14
200 FA 1-Feb-14 22-Feb-14
200 G 28-Feb-14 15-Mar-14
200 F 1-Apr-14 20-Apr-14
Вот данные:
df <- structure(list(ID = c(100L, 100L, 100L, 100L, 100L, 200L, 200L,
200L, 200L), CLASS = structure(c(4L, 3L, 4L, 3L, 3L, 2L, 2L,
3L, 1L), .Label = c("F", "FA", "G", "GA"), class = "factor"),
START = structure(c(9L, 4L, 7L, 2L, 5L, 8L, 3L, 6L, 1L), .Label = c("1-Apr-14",
"1-Apr-15", "1-Feb-14", "1-Feb-15", "10-Apr-15", "28-Feb-14",
"28-Feb-15", "3-Jan-14", "3-Jan-15"), class = "factor"),
END = structure(c(2L, 8L, 4L, 9L, 5L, 1L, 7L, 3L, 6L), .Label = c("1-Feb-14",
"1-Feb-15", "15-Mar-14", "17-Mar-15", "18-Apr-15", "20-Apr-14",
"22-Feb-14", "22-Feb-15", "8-Apr-15"), class = "factor")), .Names = c("ID",
"CLASS", "START", "END"), class = "data.frame", row.names = c(NA,
-9L))
Я хотел бы для группировки данных по столбцу ID, а затем консолидировать любые последовательные вхождения одного и того же значения в столбце CLASS (отсортированные по дате START) при выборе минимальной даты начала и максимальной даты окончания. Поэтому для идентификатора номер 100 существует только один экземпляр, где класс «G» является последовательным, поэтому я хотел бы объединить эти две строки в одну строку с датами min (START) и max (END). Это простой пример, но в реальных данных иногда есть несколько последовательных строк, которые необходимо консолидировать.
Я пробовал group_by, а затем использовал какой-то рейтинг, но это, похоже, не делает трюк. Любые предложения о том, как это решить? Также это первый раз, когда я публикую SO, поэтому я надеюсь, что этот вопрос имеет смысл.
Результат должен выглядеть следующим образом:
ID CLASS START END
100 GA 3-Jan-15 1-Feb-15
100 G 1-Feb-15 22-Feb-15
100 GA 28-Feb-15 17-Mar-15
100 G 1-Apr-15 18-Apr-15
200 FA 3-Jan-14 22-Feb-14
200 G 28-Feb-14 15-Mar-14
200 F 1-Apr-14 20-Apr-14
Не следует ли объединять два 'FA' в ID 200 в виде w ELL? –
@CactusWoman это правильно! Я отредактирую таблицу. – Kartik