title: Average and median of each n rows, for all columns of a dataframe, while keeping a datetime object as index
body: <p>I have this quite complicate data in a data frame called ulyDataLefs60_12:</p>
  
  <pre><code>  Year Day Hour Min  Sec. E1.S1 E1.S2 E1.S3 E1.S4 E1.S5 E1.S6 E1.S7 E1.S8 E2.S1 E2.S2 E2.S3 E2.S4
  1 2000 122    0   1 38.01  3.31 0.662 0.662  2.65  1.32 0.000 3.310  1.32 1.980 1.980 0.662 0.000
  2 2000 122    0   1 50.10  1.98 3.310 1.980  1.98  1.98 1.320 4.630  1.32 1.320 0.662 0.000 3.310
  3 2000 122    0   2  2.19  1.98 1.320 3.970  1.98  1.32 0.662 0.662  3.97 1.320 0.662 1.320 0.662
  4 2000 122    0   2 14.28  2.65 1.320 2.650  3.31  2.65 1.320 3.970  2.65 2.650 0.000 0.662 2.650
  5 2000 122    0   2 26.38  3.97 6.620 0.662  3.31  3.31 4.630 5.290  1.98 0.000 0.000 1.980 0.662
  6 2000 122    0   2 38.47  2.65 0.662 3.310  1.98  1.32 1.980 1.980  2.65 0.662 1.320 1.980 1.320
    E2.S5 E2.S6 E2.S7 E2.S8 E3.S1 E3.S2 E3.S3 E3.S4 E3.S5 E3.S6 E3.S7 E3.S8 E4.S1 E4.S2 E4.S3 E4.S4
  1 1.320  1.32  2.65 2.650 0.662 0.000 1.320 2.650 1.320 0.000 1.320 1.320 0.000 0.000 0.662 0.662
  2 0.000  0.00  1.98 0.662 0.000 0.662 0.000 0.662 1.980 1.980 0.662 1.320 0.000 0.000 0.000 0.662
  3 0.662  1.98  2.65 1.980 0.000 0.662 0.662 1.320 0.662 0.000 1.320 3.310 0.662 0.000 1.980 0.662
  4 0.662  1.32  1.32 0.662 0.000 0.662 0.662 0.662 0.662 0.662 0.662 0.000 0.000 0.662 0.000 0.000
  5 0.000  1.32  1.32 0.662 0.662 0.000 0.000 0.662 0.000 0.662 1.320 0.662 0.000 0.000 0.000 0.662
  6 1.320  1.32  1.32 0.000 1.320 0.000 0.000 0.662 1.320 0.000 0.662 0.662 0.662 1.320 0.000 0.000
    E4.S5 E4.S6 E4.S7 E4.S8 FP5.S1 FP5.S2 FP5.S3 FP5.S4 FP5.S5 FP5.S6 FP5.S7 FP5.S8 FP6.S1 FP6.S2
  1 0.000 0.662 0.662 0.000  0.331      0  0.662  0.000  0.662      0  0.000  0.331      0  0.331
  2 0.000 0.000 0.662 0.662  0.331      0  0.662  0.000  0.662      0  0.000  0.331      0  0.331
  3 0.662 0.000 0.662 1.320  0.000      0  0.662  0.000  0.331      0  0.000  0.000      0  0.000
  4 0.662 0.662 0.000 0.662  0.000      0  0.662  0.000  0.331      0  0.000  0.000      0  0.000
  5 0.000 0.000 0.662 0.000  0.331      0  0.000  0.331  0.331      0  0.331  0.000      0  0.000
  6 0.000 0.000 0.662 0.662  0.331      0  0.000  0.331  0.331      0  0.331  0.000      0  0.000
    FP6.S3 FP6.S4 FP6.S5 FP6.S6 FP6.S7 FP6.S8 FP7.S1 FP7.S2 FP7.S3 FP7.S4 FP7.S5 FP7.S6 FP7.S7 FP7.S8
  1  0.331  0.000  0.000  0.000      0  0.000      0  0.331  0.331  0.662      0  0.000  0.331  0.000
  2  0.331  0.000  0.000  0.000      0  0.000      0  0.331  0.331  0.662      0  0.000  0.331  0.000
  3  0.662  0.000  0.662  0.000      0  0.331      0  0.000  0.000  0.331      0  0.000  0.000  0.000
  4  0.662  0.000  0.662  0.000      0  0.331      0  0.000  0.000  0.331      0  0.000  0.000  0.000
  5  0.000  0.662  0.000  0.992      0  0.000      0  0.000  0.000  0.000      0  0.331  0.000  0.331
  6  0.000  0.662  0.000  0.992      0  0.000      0  0.000  0.000  0.000      0  0.331  0.000  0.331
    PA.LEFS60S1 PA.LEFS60S2 PA.LEFS60S3 PA.LEFS60S4 PA.LEFS60S5 PA.LEFS60S6 PA.LEFS60S7 PA.LEFS60S8
  1        64.2        52.0        70.9       105.0         144         170         134        96.2
  2        62.6        49.5        68.8       104.0         142         168         134        95.4
  3        62.7        47.7        66.2       101.0         140         167         135        96.5
  4        62.4        46.3        64.4        99.3         138         166         135        96.7
  5        59.9        43.7        63.2        98.8         138         164         133        94.8
  6        62.3        45.7        63.7        98.7         137         166         136        96.9
      BX   BY   BZ Bmag....nT.  X            datetime
  1 2.64 4.98 2.25        6.07 NA 2000-05-01 00:01:38
  2 2.67 5.16 2.03        6.15 NA 2000-05-01 00:01:50
  3 2.52 5.35 1.88        6.21 NA 2000-05-01 00:02:02
  4 2.43 5.45 1.74        6.22 NA 2000-05-01 00:02:14
  5 2.53 5.46 1.46        6.19 NA 2000-05-01 00:02:26
  6 2.29 5.26 1.61        5.96 NA 2000-05-01 00:02:38
  
  dput(head(ulyDataLefs60_12))
  structure(list(Year = c(2000L, 2000L, 2000L, 2000L, 2000L, 2000L
  ), Day = c(122L, 122L, 122L, 122L, 122L, 122L), Hour = c(0L, 
  0L, 0L, 0L, 0L, 0L), Min = c(1L, 1L, 2L, 2L, 2L, 2L), Sec. = c(38.01, 
  50.1, 2.19, 14.28, 26.38, 38.47), E1.S1 = c(3.31, 1.98, 1.98, 
  2.65, 3.97, 2.65), E1.S2 = c(0.662, 3.31, 1.32, 1.32, 6.62, 0.662
  ), E1.S3 = c(0.662, 1.98, 3.97, 2.65, 0.662, 3.31), E1.S4 = c(2.65, 
  1.98, 1.98, 3.31, 3.31, 1.98), E1.S5 = c(1.32, 1.98, 1.32, 2.65, 
  3.31, 1.32), E1.S6 = c(0, 1.32, 0.662, 1.32, 4.63, 1.98), E1.S7 = c(3.31, 
  4.63, 0.662, 3.97, 5.29, 1.98), E1.S8 = c(1.32, 1.32, 3.97, 2.65, 
  1.98, 2.65), E2.S1 = c(1.98, 1.32, 1.32, 2.65, 0, 0.662), E2.S2 = c(1.98, 
  0.662, 0.662, 0, 0, 1.32), E2.S3 = c(0.662, 0, 1.32, 0.662, 1.98, 
  1.98), E2.S4 = c(0, 3.31, 0.662, 2.65, 0.662, 1.32), E2.S5 = c(1.32, 
  0, 0.662, 0.662, 0, 1.32), E2.S6 = c(1.32, 0, 1.98, 1.32, 1.32, 
  1.32), E2.S7 = c(2.65, 1.98, 2.65, 1.32, 1.32, 1.32), E2.S8 = c(2.65, 
  0.662, 1.98, 0.662, 0.662, 0), E3.S1 = c(0.662, 0, 0, 0, 0.662, 
  1.32), E3.S2 = c(0, 0.662, 0.662, 0.662, 0, 0), E3.S3 = c(1.32, 
  0, 0.662, 0.662, 0, 0), E3.S4 = c(2.65, 0.662, 1.32, 0.662, 0.662, 
  0.662), E3.S5 = c(1.32, 1.98, 0.662, 0.662, 0, 1.32), E3.S6 = c(0, 
  1.98, 0, 0.662, 0.662, 0), E3.S7 = c(1.32, 0.662, 1.32, 0.662, 
  1.32, 0.662), E3.S8 = c(1.32, 1.32, 3.31, 0, 0.662, 0.662), E4.S1 = c(0, 
  0, 0.662, 0, 0, 0.662), E4.S2 = c(0, 0, 0, 0.662, 0, 1.32), E4.S3 = c(0.662, 
  0, 1.98, 0, 0, 0), E4.S4 = c(0.662, 0.662, 0.662, 0, 0.662, 0
  ), E4.S5 = c(0, 0, 0.662, 0.662, 0, 0), E4.S6 = c(0.662, 0, 0, 
  0.662, 0, 0), E4.S7 = c(0.662, 0.662, 0.662, 0, 0.662, 0.662), 
      E4.S8 = c(0, 0.662, 1.32, 0.662, 0, 0.662), FP5.S1 = c(0.331, 
      0.331, 0, 0, 0.331, 0.331), FP5.S2 = c(0, 0, 0, 0, 0, 0), 
      FP5.S3 = c(0.662, 0.662, 0.662, 0.662, 0, 0), FP5.S4 = c(0, 
      0, 0, 0, 0.331, 0.331), FP5.S5 = c(0.662, 0.662, 0.331, 0.331, 
      0.331, 0.331), FP5.S6 = c(0, 0, 0, 0, 0, 0), FP5.S7 = c(0, 
      0, 0, 0, 0.331, 0.331), FP5.S8 = c(0.331, 0.331, 0, 0, 0, 
      0), FP6.S1 = c(0, 0, 0, 0, 0, 0), FP6.S2 = c(0.331, 0.331, 
      0, 0, 0, 0), FP6.S3 = c(0.331, 0.331, 0.662, 0.662, 0, 0), 
      FP6.S4 = c(0, 0, 0, 0, 0.662, 0.662), FP6.S5 = c(0, 0, 0.662, 
      0.662, 0, 0), FP6.S6 = c(0, 0, 0, 0, 0.992, 0.992), FP6.S7 = c(0, 
      0, 0, 0, 0, 0), FP6.S8 = c(0, 0, 0.331, 0.331, 0, 0), FP7.S1 = c(0, 
      0, 0, 0, 0, 0), FP7.S2 = c(0.331, 0.331, 0, 0, 0, 0), FP7.S3 = c(0.331, 
      0.331, 0, 0, 0, 0), FP7.S4 = c(0.662, 0.662, 0.331, 0.331, 
      0, 0), FP7.S5 = c(0, 0, 0, 0, 0, 0), FP7.S6 = c(0, 0, 0, 
      0, 0.331, 0.331), FP7.S7 = c(0.331, 0.331, 0, 0, 0, 0), FP7.S8 = c(0, 
      0, 0, 0, 0.331, 0.331), PA.LEFS60S1 = c(64.2, 62.6, 62.7, 
      62.4, 59.9, 62.3), PA.LEFS60S2 = c(52, 49.5, 47.7, 46.3, 
      43.7, 45.7), PA.LEFS60S3 = c(70.9, 68.8, 66.2, 64.4, 63.2, 
      63.7), PA.LEFS60S4 = c(105, 104, 101, 99.3, 98.8, 98.7), 
      PA.LEFS60S5 = c(144, 142, 140, 138, 138, 137), PA.LEFS60S6 = c(170, 
      168, 167, 166, 164, 166), PA.LEFS60S7 = c(134, 134, 135, 
      135, 133, 136), PA.LEFS60S8 = c(96.2, 95.4, 96.5, 96.7, 94.8, 
      96.9), BX = c(2.64, 2.67, 2.52, 2.43, 2.53, 2.29), BY = c(4.98, 
      5.16, 5.35, 5.45, 5.46, 5.26), BZ = c(2.25, 2.03, 1.88, 1.74, 
      1.46, 1.61), Bmag....nT. = c(6.07, 6.15, 6.21, 6.22, 6.19, 
      5.96), X = c(NA, NA, NA, NA, NA, NA), datetime = structure(list(
          sec = c(38, 50, 2, 14, 26, 38), min = c(1L, 1L, 2L, 2L, 
          2L, 2L), hour = c(0L, 0L, 0L, 0L, 0L, 0L), mday = c(1L, 
          1L, 1L, 1L, 1L, 1L), mon = c(4L, 4L, 4L, 4L, 4L, 4L), 
          year = c(100L, 100L, 100L, 100L, 100L, 100L), wday = c(1L, 
          1L, 1L, 1L, 1L, 1L), yday = c(121L, 121L, 121L, 121L, 
          121L, 121L), isdst = c(1L, 1L, 1L, 1L, 1L, 1L)), .Names = c("sec", 
      "min", "hour", "mday", "mon", "year", "wday", "yday", "isdst"
      ), class = c("POSIXlt", "POSIXt"))), .Names = c("Year", "Day", 
  "Hour", "Min", "Sec.", "E1.S1", "E1.S2", "E1.S3", "E1.S4", "E1.S5", 
  "E1.S6", "E1.S7", "E1.S8", "E2.S1", "E2.S2", "E2.S3", "E2.S4", 
  "E2.S5", "E2.S6", "E2.S7", "E2.S8", "E3.S1", "E3.S2", "E3.S3", 
  "E3.S4", "E3.S5", "E3.S6", "E3.S7", "E3.S8", "E4.S1", "E4.S2", 
  "E4.S3", "E4.S4", "E4.S5", "E4.S6", "E4.S7", "E4.S8", "FP5.S1", 
  "FP5.S2", "FP5.S3", "FP5.S4", "FP5.S5", "FP5.S6", "FP5.S7", "FP5.S8", 
  "FP6.S1", "FP6.S2", "FP6.S3", "FP6.S4", "FP6.S5", "FP6.S6", "FP6.S7", 
  "FP6.S8", "FP7.S1", "FP7.S2", "FP7.S3", "FP7.S4", "FP7.S5", "FP7.S6", 
  "FP7.S7", "FP7.S8", "PA.LEFS60S1", "PA.LEFS60S2", "PA.LEFS60S3", 
  "PA.LEFS60S4", "PA.LEFS60S5", "PA.LEFS60S6", "PA.LEFS60S7", "PA.LEFS60S8", 
  "BX", "BY", "BZ", "Bmag....nT.", "X", "datetime"), row.names = c(NA, 
  6L), class = "data.frame")
  </code></pre>
  
  <p>And what I want, is to get the average and median of a certain number of rows. Lets say, I want a new data frame, that instead of all these values, has the average or median of every 5 rows in all columns (or at least in all columns starting at the E1.S1 column.</p>
  
  <p>I started by looking at the example: <a href="https://stackoverflow.com/questions/4299362/calculate-means-of-rows">Calculate means of rows</a> and it did get me so far as being able to get the average of a N number of rows for a single column of my dataframe.</p>
  
  <pre><code>ulyDataLefs60_12_avg = colSums(matrix(ulyDataLefs60_12$E1.S1, nrow=5))
  </code></pre>
  
  <p>The problem is that the R function I wanted to use, <strong>colSums</strong>, doesn't work with some fields, namely the datetime field (for obvious reasons), so I can't apply it across all the columns and get a nice averaged dataframe.</p>
  
  <pre><code>ulyDataLefs60_12_avg = colSums(matrix(ulyDataLefs60_12, nrow=5))
  Error in colSums(matrix(ulyDataLefs60_12, nrow = 5)) : 
    'x' must be numeric
  </code></pre>
  
  <p>I'm glad to have the datetime field at the beginning of the every 5 rows I use to get the average and the median (better if I got the datetime at the center of the 5 values interval tough), but so far I didn't come with an answer that does the 2 things at the same time.</p>
  
  <p>Perhaps it's a really easy thing to do, but it's cracking my head.</p>