tabulate

    Generate a frequency table.

    Usage

    var tabulate = require( '@stdlib/utils/tabulate' );
    

    tabulate( collection )

    Generates a frequency table.

    var arr = [ 'beep', 'boop', 'foo', 'beep' ];
    
    var out = tabulate( arr );
    // returns [ [ 'beep', 2, 0.5 ], [ 'boop', 1, 0.25 ], [ 'foo', 1, 0.25 ] ]
    

    The returned frequency table is an array of arrays. Each sub-array corresponds to a unique value in the input collection and is structured as follows:

    • 0: unique value
    • 1: value count
    • 2: frequency percentage

    Notes

    • A collection may be either an Array, Typed Array, or an array-like Object (excluding strings and functions).

    Examples

    var randu = require( '@stdlib/random/base/randu' );
    var floor = require( '@stdlib/math/base/special/floor' );
    var tabulate = require( '@stdlib/utils/tabulate' );
    
    var vals;
    var arr;
    var out;
    var i;
    var j;
    
    vals = [ 'beep', 'boop', 'foo', 'bar', 'woot', 'woot' ];
    
    // Generate a random collection...
    arr = new Array( 100 );
    for ( i = 0; i < arr.length; i++ ) {
        j = floor( randu()*vals.length );
        arr[ i ] = vals[ j ];
    }
    
    // Generate a frequency table:
    out = tabulate( arr );
    console.log( out );