R function - aggregate(), by(), apply()

Read the data using read.csv

store.df <- read.csv(paste("StoreData.csv", sep=""))

Total Sales of Product 2, by Country

aggregate(store.df$p2sales, by=list(country=store.df$country), sum)
  country     x
1      AU  9934
2      BR 21362
3      CN 20911
4      DE 52263
5      GB 31264
6      JP 41344
7      US 31248

Average Sales of Product 1 by Store

aggregate(store.df$p1sales, by=list(StoreID = store.df$storeNum), mean)
   StoreID        x
1      101 130.5385
2      102 134.7404
3      103 136.0385
4      104 131.4423
5      105 129.5288
6      106 133.7981
7      107 133.8077
8      108 133.6923
9      109 131.5481
10     110 132.0962
11     111 130.4519
12     112 129.8846
13     113 137.7692
14     114 132.1923
15     115 129.5288
16     116 135.7500
17     117 135.0385
18     118 139.8462
19     119 133.7308
20     120 129.5481

Average Sales of Product 1 by Store

by(store.df$p1sales, store.df$storeNum, mean)
store.df$storeNum: 101
[1] 130.5385
-------------------------------------------------------- 
store.df$storeNum: 102
[1] 134.7404
-------------------------------------------------------- 
store.df$storeNum: 103
[1] 136.0385
-------------------------------------------------------- 
store.df$storeNum: 104
[1] 131.4423
-------------------------------------------------------- 
store.df$storeNum: 105
[1] 129.5288
-------------------------------------------------------- 
store.df$storeNum: 106
[1] 133.7981
-------------------------------------------------------- 
store.df$storeNum: 107
[1] 133.8077
-------------------------------------------------------- 
store.df$storeNum: 108
[1] 133.6923
-------------------------------------------------------- 
store.df$storeNum: 109
[1] 131.5481
-------------------------------------------------------- 
store.df$storeNum: 110
[1] 132.0962
-------------------------------------------------------- 
store.df$storeNum: 111
[1] 130.4519
-------------------------------------------------------- 
store.df$storeNum: 112
[1] 129.8846
-------------------------------------------------------- 
store.df$storeNum: 113
[1] 137.7692
-------------------------------------------------------- 
store.df$storeNum: 114
[1] 132.1923
-------------------------------------------------------- 
store.df$storeNum: 115
[1] 129.5288
-------------------------------------------------------- 
store.df$storeNum: 116
[1] 135.75
-------------------------------------------------------- 
store.df$storeNum: 117
[1] 135.0385
-------------------------------------------------------- 
store.df$storeNum: 118
[1] 139.8462
-------------------------------------------------------- 
store.df$storeNum: 119
[1] 133.7308
-------------------------------------------------------- 
store.df$storeNum: 120
[1] 129.5481

Average Sales of Product 1 by Store and Year (2001, 2002)

by(store.df$p1sales, list(store.df$storeNum, store.df$Year), mean)
: 101
: 1
[1] 127.7885
-------------------------------------------------------- 
: 102
: 1
[1] 129.7115
-------------------------------------------------------- 
: 103
: 1
[1] 133.2308
-------------------------------------------------------- 
: 104
: 1
[1] 128.0769
-------------------------------------------------------- 
: 105
: 1
[1] 129.7692
-------------------------------------------------------- 
: 106
: 1
[1] 131.5
-------------------------------------------------------- 
: 107
: 1
[1] 131.1154
-------------------------------------------------------- 
: 108
: 1
[1] 134.8077
-------------------------------------------------------- 
: 109
: 1
[1] 129.8269
-------------------------------------------------------- 
: 110
: 1
[1] 132.6923
-------------------------------------------------------- 
: 111
: 1
[1] 130.8654
-------------------------------------------------------- 
: 112
: 1
[1] 134.5
-------------------------------------------------------- 
: 113
: 1
[1] 143.4808
-------------------------------------------------------- 
: 114
: 1
[1] 129.7115
-------------------------------------------------------- 
: 115
: 1
[1] 131.1731
-------------------------------------------------------- 
: 116
: 1
[1] 136.3654
-------------------------------------------------------- 
: 117
: 1
[1] 135.6154
-------------------------------------------------------- 
: 118
: 1
[1] 137.1923
-------------------------------------------------------- 
: 119
: 1
[1] 132.6731
-------------------------------------------------------- 
: 120
: 1
[1] 130.7308
-------------------------------------------------------- 
: 101
: 2
[1] 133.2885
-------------------------------------------------------- 
: 102
: 2
[1] 139.7692
-------------------------------------------------------- 
: 103
: 2
[1] 138.8462
-------------------------------------------------------- 
: 104
: 2
[1] 134.8077
-------------------------------------------------------- 
: 105
: 2
[1] 129.2885
-------------------------------------------------------- 
: 106
: 2
[1] 136.0962
-------------------------------------------------------- 
: 107
: 2
[1] 136.5
-------------------------------------------------------- 
: 108
: 2
[1] 132.5769
-------------------------------------------------------- 
: 109
: 2
[1] 133.2692
-------------------------------------------------------- 
: 110
: 2
[1] 131.5
-------------------------------------------------------- 
: 111
: 2
[1] 130.0385
-------------------------------------------------------- 
: 112
: 2
[1] 125.2692
-------------------------------------------------------- 
: 113
: 2
[1] 132.0577
-------------------------------------------------------- 
: 114
: 2
[1] 134.6731
-------------------------------------------------------- 
: 115
: 2
[1] 127.8846
-------------------------------------------------------- 
: 116
: 2
[1] 135.1346
-------------------------------------------------------- 
: 117
: 2
[1] 134.4615
-------------------------------------------------------- 
: 118
: 2
[1] 142.5
-------------------------------------------------------- 
: 119
: 2
[1] 134.7885
-------------------------------------------------------- 
: 120
: 2
[1] 128.3654

Average of store.df columns 2-9

apply(store.df[, 2:9], MARGIN=2, FUN=mean)
       Year        Week     p1sales     p2sales     p1price     p2price 
  1.5000000  26.5000000 133.0485577 100.1567308   2.5443750   2.6995192 
     p1prom      p2prom 
  0.1000000   0.1384615 
apply(store.df[, 2:9], 2, mean)
       Year        Week     p1sales     p2sales     p1price     p2price 
  1.5000000  26.5000000 133.0485577 100.1567308   2.5443750   2.6995192 
     p1prom      p2prom 
  0.1000000   0.1384615 

Standard Deviation of store.df columns 2-9

apply(store.df[, 2:9], 2, sd)
      Year       Week    p1sales    p2sales    p1price    p2price 
 0.5001202 15.0119401 28.3725990 24.4241905  0.2948819  0.3292181 
    p1prom     p2prom 
 0.3000721  0.3454668 

Applying a User-defined function

apply(store.df[, 2:9], 2, function(x) { mean(x) - median(x) } )
     Year      Week   p1sales   p2sales   p1price   p2price    p1prom 
0.0000000 0.0000000 4.0485577 4.1567308 0.0543750 0.1095192 0.1000000 
   p2prom 
0.1384615