У меня есть набор данных, который выглядит следующим образом:Дата наматывания в R
ID FromDate ToDate SiteID Cost
1 8/12/2014 8/31/2014 12 245.98
1 9/1/2014 9/7/2014 12 269.35
1 10/10/2014 10/17/2014 12 209.98
1 11/22/2014 11/30/2014 12 309.12
1 12/1/2014 12/11/2014 12 202.14
2 8/16/2014 8/21/2014 12 109.35
2 8/22/2014 8/24/2014 14 44.12
2 9/25/2014 9/29/2014 12 98.75
3 9/15/2014 9/30/2014 23 536.27
3 10/1/2014 10/31/2014 12 529.87
3 11/1/2014 11/30/2014 12 969.55
3 12/1/2014 12/12/2014 12 607.35
То, что я хотел бы, чтобы выглядеть как это:
ID FromDate ToDate SiteID Cost
1 8/12/2014 9/7/2014 12 515.33
1 10/10/2014 10/17/2014 12 209.98
1 11/22/2014 12/11/2014 12 511.26
2 8/16/2014 8/21/2014 12 109.35
2 8/22/2014 8/24/2014 14 44.12
2 9/25/2014 9/29/2014 12 98.75
3 9/15/2014 9/30/2014 23 536.27
3 10/1/2014 12/12/2014 12 2106.77
Как можно видеть, даты свертываются, если есть продолжение, а затраты суммируются по идентификатору и SiteID. Чтобы помочь кому-то понять сложность, если есть продолжение в интервале дат, но SiteID изменяется, то это отдельная строка. Если в интервале дат нет продолжения, это отдельная строка. Как это сделать в R? Кроме того, у меня более 100 000 индивидуальных идентификаторов. Итак, каков наиболее эффективный способ/пакет для этого?
Мне нравится этот подход намного лучше - как насчет упрощения: 'df%>% mutate (crit = FromDate-lag (ToDate, default = 1) == 1, gr = cumsum (crit == FALSE))% >% group_by (гр, ID, SiteID)%>% реферирования (стоимость = сумма (стоимость), FromDate = мин (FromDate), ToDate = макс (ToDate)) ' – JasonAizkalns
Почему падение этот код«ИД «Колонка? – akash87
@JasonAizkalns Спасибо. Это явно лучше. – Khashaa