Somme par colonne distincte de la valeur dans R

J'ai une très grande dataframe dans R et tiens à la somme des deux colonnes pour chaque valeur distincte dans les autres colonnes, par exemple de dire que nous avions des données d'un dataframe de transactions dans divers magasins au cours d'une journée comme suit

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))

qui est:

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

Et je veux pas faire le total de la vente et de profit pour chaque boutique pour donner:

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

Je suis actuellement en utilisant le code suivant pour ce faire:

 shop_day <-ddply(shop, "shop_id", transform, sale=sum(sale), profit=sum(profit))
 shop_day <- subset(shop_day, !duplicated(shop_id))

qui fonctionne tout à fait bien, mais comme je l'ai dit mon dataframe est large (de 140 000 lignes, 37 colonnes et près de 100 000 lignes uniques qui je veux somme) et mon code prend une éternité à courir et puis finalement dit qu'il est à court de mémoire.

Personne ne sait de la manière la plus efficace pour ce faire.

Merci d'avance!

...Je me sens un data.table réponse à venir...

OriginalL'auteur user1165199 | 2012-08-02