我在R中有一個非常大的數據框,並且想要爲其他列中每個不同值的兩列進行求和,例如我們有一天中各個商店中的交易數據幀的數據如下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))
是:
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
而且我要總結每個店鋪的銷售和利潤給:
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
我目前使用下面的代碼來做到這一點:
shop_day <-ddply(shop, "shop_id", transform, sale=sum(sale), profit=sum(profit))
shop_day <- subset(shop_day, !duplicated(shop_id))
這工作絕對沒問題,但我說我的數據框大(140,000行,37列和近10萬的唯一行,我想總結)而且我的代碼需要很長時間才能運行,然後最終表明它的內存不足。
有誰知道最有效的方法來做到這一點。
在此先感謝!
......我覺得'data.table'的答案來了...... – 2012-08-02 16:42:40