Parent

Files

Array

Public Instance Methods

median() click to toggle source

Returns the median for the array; nil if array is empty.

NOTE: This is not (presently) a common core extension and is not loaded automatically when using require 'facets'.

# File lib/facets/core-uncommon/facets/array/median.rb, line 12
def median
  percentile(50)
end
percentile(p) click to toggle source

Returns the percentile value for percentile p; nil if array is empty.

p should be expressed as an integer; percentile(90) returns the 90th percentile of the array.

Algorithm from NIST

NOTE: This is not (presently) a common core extension and is not loaded automatically when using require 'facets'.

CREDT: ?

# File lib/facets/core-uncommon/facets/array/percentile.rb, line 15
def percentile(p)
  sorted_array = self.sort
  rank = (p.to_f / 100) * (self.length + 1)

  if self.length == 0
    return nil
  elsif rank.to_i == rank #fractional_part?
    sample_0 = sorted_array[rank.truncate - 1]
    sample_1 = sorted_array[rank.truncate]

    fractional_part = rank.abs.modulo(1)
    return (fractional_part * (sample_1 - sample_0)) + sample_0
  else
    return sorted_array[rank.to_i - 1]
  end    
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.