Ho un set di dati che sembra come il seguente:Data roll-up in 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
Quello che vorrei questo a guardare come è:
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
Come si può vedere, le date sono arrotolati se c'è una continuazione e i costi sono riassunti per ID e SiteID. Per aiutare qualcuno a capire la complessità, se c'è una continuazione nell'intervallo di date, ma il SiteID cambia, allora è una riga separata. Se non c'è continuazione nell'intervallo di date, è una riga separata. Come posso farlo in R? Inoltre, ho oltre 100.000 ID individuali. Quindi qual è il modo/pacchetto più efficiente da usare per questo?
Mi piace molto questo approccio - come semplificare a: 'df%>% mutate (crit = FromDate-lag (ToDate, default = 1) == 1, gr = cumsum (crit == FALSE))% >% group_by (gr, ID, SiteID)%>% riassumere (costo = somma (cost), FromDate = min (FromDate), todate = max (tODATE)) ' – JasonAizkalns
Perché questo codice cadere il "ID "Colonna? – akash87
@JasonAizkalns Grazie. Questo è chiaramente meglio. – Khashaa