Method: Rust::Descriptive.median

Defined in:
lib/rust/stats/descriptive.rb

.median(data) ⇒ Object

Raises:

  • (TypeError)


28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/rust/stats/descriptive.rb', line 28

def median(data)
    raise TypeError, "Expecting Array of numerics" if !data.is_a?(Array) || !data.all? { |e| e.is_a?(Numeric) }
    
    sorted = data.sort
    if data.size == 0
        return Float::NAN
    elsif data.size.odd?
        return sorted[data.size / 2]
    else
        i = (data.size / 2)
        return (sorted[i - 1] + sorted[i]) / 2.0
    end
end