Tôi có một bộ dữ liệu trông giống như sau:ngày roll-up trong 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
Những gì tôi muốn này để trông giống như là:
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
Như người ta có thể thấy, số ngày được cuộn lên nếu có sự tiếp tục và chi phí được tổng hợp bởi ID và SiteID. Để giúp ai đó hiểu được sự phức tạp, nếu có sự tiếp nối trong khoảng thời gian ngày, nhưng SiteID thay đổi, thì đó là một hàng riêng biệt. Nếu không có sự tiếp tục trong khoảng thời gian ngày, nó là một hàng riêng biệt. Làm thế nào để làm điều này trong R? Ngoài ra, tôi có hơn 100.000 ID riêng lẻ. Vì vậy, cách hiệu quả nhất/gói để sử dụng cho điều này là gì?
Tôi thích cách tiếp cận này tốt hơn rất nhiều - cách đơn giản hóa: 'df%>% biến đổi (crit = FromDate-lag (ToDate, mặc định = 1) == 1, gr = cumsum (crit == FALSE))% >% group_by (gr, ID, SiteID)%>% tóm tắt (cost = sum (Cost), FromDate = min (FromDate), ToDate = max (ToDate)) ' – JasonAizkalns
Tại sao mã này thả" ID " Cột? – akash87
@JasonAizkalns Cảm ơn. Điều đó rõ ràng là tốt hơn. – Khashaa