Giter Club home page Giter Club logo

pivot-js's Introduction

build code-size min-size types
node npm

pivot-table-js

A lightweight module that takes an array of objects and produces an array of objects back based on one or more aggregate function per column. Emulating excel pivot tables.

pivot-table-js can calculate different aggregate functions on sets of values. The results can be optionally renamed.

Install

Using npm:

$ npm install pivot-table-js

Using yarn:

$ yarn add pivot-table-js

Example

import { Pivot } from 'pivot-table-js'


const data = [
  {
    domain: 'duckduckgo.com',
    path: '/search',
    traffic: 15000,
    trustFlow: 30
  },
  {
    domain: 'duckduckgo.com',
    path: '/images',
    traffic: 8000,
    trustFlow: 20
  },
  {
    domain: 'google.com',
    path: '/search',
    traffic: 20000,
    trustFlow: 42
  },
  {
    domain: 'google.com',
    path: '/images',
    traffic: 10000,
    trustFlow: 38
  }
]


const index = 'domain'

const aggFunc =   {
  domain: 'count', 
  traffic: ['sum', 'mean'], 
  trustFlow: 'mean' 
}

const rename = ['Domain', 'Frequency', 'Traffic Sum', 'Traffic Average', 'TF Average']

const pivotTable = Pivot(data, index, aggFunc, rename)

console.log(pivotTable)

Will output:

[{
  Domain: 'duckduckgo.com',
  'Frequency': 2,
  'Traffic Sum': 23000,
  'Traffic Average': 11500,
  'TF Average': 25
},
{
  Domain: 'google.com',
  'Frequency': 2,
  'Traffic Sum': 30000,
  'Traffic Average': 15000,
  'TF Average': 40
},
{
  Domain: 'Grand Total',
  'Frequency': 4,
  'Traffic Sum': 53000,
  'Traffic Average': 13250,
  'TF Average': 32.5
}]
Domain Frequency Traffic Sum Traffic Average Average TF
duckduckgo.com 2 23000 11500 25
google.com 2 30000 15000 40
Grand Total 4 53000 13250 32.5

Updates

New feature allows for multiple funcions on the same column, just enclose the type of funcions in an array

const aggFunc =   {
  domain: 'count', 
  traffic: ['sum', 'mean'], 
  trustFlow: 'mean' 
}

Available aggregate functions

Function Definition
count Calculates the count of all values in a set
counta Calculates the count of all values in a set including empty strings
sum Calculates the sum of values.
mean Calculates the average in a set of values โ€” not rounded
median Calculates the median in a set of values โ€” not rounded
mode Calculates the mode in a set of values
min Minimum gets the minimum value in a set of values
max Maximun gets the maximum value in a set of values

Usage

Pivot(data, index, values [,rename])

  • data <Array<Object>> Prepared Array of objects to pivot against.
  • index <string> The index row to use as pivot.
  • values <Object> Aggregate functions
    • [column: <string>]: <Array<string>> | string Use array for more than one option on the same column
  • rename <Array<string>> Optionally rename the output columns, the order is important.
  • returns: <Array<Object>>

pivot-js's People

Contributors

a-fernandez-naves avatar alvaro-escalante avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.