Tôi có một khung dữ liệu rất lớn trong R và muốn tổng hợp hai cột cho mỗi giá trị khác biệt trong các cột khác, ví dụ như chúng tôi đã có dữ liệu của một khung dữ liệu giao dịch trong các cửa hàng khác nhau trong một ngày như sauTổng bằng giá trị cột riêng biệt trong R
shop <- data.frame('shop_id' = c(1, 1, 1, 2, 3, 3),
'shop_name' = c('Shop A', 'Shop A', 'Shop A', 'Shop B', 'Shop C', 'Shop C'),
'city' = c('London', 'London', 'London', 'Cardiff', 'Dublin', 'Dublin'),
'sale' = c(12, 5, 9, 15, 10, 18),
'profit' = c(3, 1, 3, 6, 5, 9))
đó là:
shop_id shop_name city sale profit
1 Shop A London 12 3
1 Shop A London 5 1
1 Shop A London 9 3
2 Shop B Cardiff 15 6
3 Shop C Dublin 10 5
3 Shop C Dublin 18 9
và tôi muốn tổng hợp việc bán và lợi nhuận cho mỗi cửa hàng để cung cấp cho:
shop_id shop_name city sale profit
1 Shop A London 26 7
2 Shop B Cardiff 15 6
3 Shop C Dublin 28 14
Tôi hiện đang sử dụng đoạn mã sau để làm điều này:
shop_day <-ddply(shop, "shop_id", transform, sale=sum(sale), profit=sum(profit))
shop_day <- subset(shop_day, !duplicated(shop_id))
mà làm việc hoàn toàn tốt, nhưng như tôi đã nói dataframe của tôi là lớn (140.000 hàng, 37 cột và gần 100.000 hàng duy nhất mà tôi muốn tổng hợp) và mã của tôi mất nhiều thời gian để chạy và sau đó cuối cùng nói rằng nó đã hết bộ nhớ.
Có ai biết cách hiệu quả nhất để thực hiện việc này không.
Cảm ơn trước!
... Tôi cảm thấy câu trả lời 'data.table' sắp tới ... –