class Array

Public Instance Methods

ave() click to toggle source

Average of multiple numbers

# File lib/overloads/array.rb, line 3
def ave
  return false unless self.length > 0

  arr = self

  arr.inject(:+).to_f / arr.length.to_f
end
merge_hashes_using_key(key) click to toggle source

For reference: stackoverflow.com/questions/27249327/how-to-merge-hashes-if-a-specified-keys-values-are-same-in-a-array Credits to stackoverflow.com/users/390819/w0lf for the solution

# File lib/overloads/array.rb, line 36
def merge_hashes_using_key(key)
  return false unless self.length > 0

  arr = self

  arr.group_by{ |h| h[key] }.collect{ |_, hs| hs.reduce(:merge) }
end
stdevp() click to toggle source

For reference: www.mathsisfun.com/data/standard-deviation-formulas.html Population standard deviation

# File lib/overloads/array.rb, line 14
def stdevp
  return false unless self.length > 0

  arr = self
  # Step 1: Get the mean
  mean = arr.ave

  # Step 2: Subtract the mean and square the result
  step_2 = arr.reduce([]) do |i, n|
    i << (n.to_f - mean) ** 2
  end

  # Step 3: Get mean of step 2
  step_3 = step_2.inject(:+).to_f / step_2.length.to_f

  # Step 4: Square root of step 3
  Math.sqrt(step_3).to_f
end