module Enumerable

Public Instance Methods

mean(default = nil) click to toggle source

Calculates the mean of a numeric collection.

@param default [Object] an optional default return value if there are

no elements. It is nil by default.

@return The mean of the elements or the default value if there are no

elements.

@example

[1, 2, 3, 4, 5].mean #=> 3
[].mean #=> nil
[].mean(0) #=> 0
# File lib/datasumz/core_extensions/enumerable/mean.rb, line 16
def mean(default = nil)
  coll_size = to_a.size
  coll_size > 0 ? reduce(&:+) / coll_size.to_f : default
end
median(default = nil) click to toggle source
# File lib/datasumz/core_extensions/enumerable/median.rb, line 5
def median(default = nil)
  sorted = sort
  (sorted[(length - 1) / 2] + sorted[length / 2]) / 2.0
end
sd() click to toggle source
# File lib/datasumz/core_extensions/enumerable/sd.rb, line 10
def sd
  Math.sqrt(variance)
end
sum(identify = nil) click to toggle source

Sums up elements of a collection by invoking their ‘+` method.

@param default [Object] an optional default return value if there are

no elements. It is nil by default.

@return The sum of the elements or the default value if there are no

elements.

@example

[1, 2, 3, 4, 5].sum #=> 15
["a", "b", "c"].sum #=> "abc"
[].sum #=> nil
[].sum(0) #=> 0
# File lib/datasumz/core_extensions/enumerable/sum.rb, line 17
def sum(identify = nil)
  reduce(&:+) || default
end
variance() click to toggle source
# File lib/datasumz/core_extensions/enumerable/sd.rb, line 5
def variance
  sum = inject(0) { |accum, i| accum + (i - mean) ** 2}
  sum/(length - 1).to_f
end