# dataframe [![spm version](http://spmjs.io/badge/dataframe)](http://spmjs.io/package/dataframe)

---



## Install

```
$ spm install dataframe --save
```

## Usage

```js
var Frame = require('dataframe');

var data = [ 
  {"name":"Mazda","mpg":"RX4","cyl":21,"disp":6,"hp":160,"drat":110,"wt":3.9,"qsec":2.62,"vs":16.46,"am":0,"gear":1,"carb":4},
  {"name":"Mazda","mpg":"RX4","cyl":"Wag","disp":21,"hp":6,"drat":160,"wt":110,"qsec":3.9,"vs":2.875,"am":17.02,"gear":0,"carb":1}
];
// 创建 frame
var f = new Frame(data);

// use dataframe


```


## API

### 属性

#### isFrame `Boolean`

* 是否是数据集合

#### arr `Array`

* 数据集合的列数组，每列是一个子数组

#### names `Array`

* 列名称

### 方法

#### colNames() `Array`

* 返回 names

#### colCount()  `Number`

* 数据集合列的个数

#### colIndex(name) `Number`

* 根据列名称获取对应的索引

#### colArray(name) `Array`

* 根据列名称、索引获取列对应的数组

#### colReplace(name,arr) `chainable`

* 替换数据集合中的列数组
* name 可以是列名称也可以是索引
* 返回数据集合本身，数据集合发生改变

#### rowCount() `Number`

* 数据集合行的个数

#### rowObject(index) `Object`

* 根据索引获取行对象

#### cell(rowIndex,colName) `*`

* 返回指定行索引和列名称（列索引)的数值

#### toArray() `Array`

* 将数据集合生成列数组

#### toJSON() `Array`

* 将数据集合生成JSON 数组

#### s() `String`

* 将整个数据集合生成字符串，一般用于调试输出现有集合


### 下列方法生成新的数据集合

#### col(name) `Frame`

* 根据列名称或者索引生成新的数据集合

#### cols(names) `Frame`

* 根据多个列名称或者索引生成新的数据集合


#### row(rowInde) `Frame`

* 根据行索引生成新的数据集合

#### rows(rowIndexs) `Frame`

* 根据多个行索引生成新的数据集合

#### sub(startCol,endCol,startRow,endRow) `Frame`

* 根据行和列获取一个子集合

### 静态方法

#### mean(frame,x) `Number`

* 计算列x的平局值

#### geometric_mean(frame,x) `Number`

* 计算列x的列的几何均值

#### sum(frame,x) `Number`

* 计算列x的和

#### max(frame,x) `Number`

* 计算列x的最大值

#### min(frame,x) `Number`

* 计算列x的最小值

#### range(frame,x) `Array`

* 计算列x的最小值和最大值

#### model(frame,x) `Number`

* 计算列x的众数，最多的数

#### median(frame,x) `Number`

* 计算列x的中位数

#### variance(frame,x) `Number`

* 计算列x的方差

#### standard_deviation(frame,x) `Number`

* 计算列x的标准方差

#### sort(frame,x) `Frame`

* 返回按照列排序后的数据集合

#### group(frame,condition) `Array`

* 按照条件进行分组，返回 [frame1,frame2...framen]
* condition条件可以是列名的数组也可以是一个函数返回一个唯一的键值

#### groupToMap(frame,condition) `Array`

* 按照条件进行分组，形成map，键值对,返回 {key1: frame1,key2: frame2,key3: frame3....keyn:framen}
* condition条件可以是列名的数组也可以是一个函数返回一个唯一的键值


#### complement(frame,cols) `Frame`

* 取指定列的补集组成的数据集合，例如 names: ['a','b','c','d']， Frame.complement(frame,['a','c']),生成的names : ['b','d']的数据集合

#### merge(frame1,frame2...framen) `Frame`

* 合并传入的集合成为一个集合，列不发生变化，假设传入的集合的列一致，仅是增加行

#### combin(frame1,frame2...framen) `Frame`

* 合并传入的集合成为一个集合，列进行组合，行的数目不变，仅仅是列变化









