DC.js,Crossfilter - 针对跨表格数据的假组与数据合并

时间:2017-04-19 16:14:56

标签: dc.js crossfilter

我有三个CSV文件送入一个DC仪表板。第一个有100行(每个公司一个)和30个字段,并以交叉滤波器友好的方式组织。第二个文件也有100行(每个公司一个),但有40个相关的"因素"名称排列成交叉表格。第三个文件每个公司/月组合有一行,例如公司A-2017 2017年,公司A-Feb 2017等。

E.g。档案1

Company 1---Dimension1---Dimension2---etc
Company 2---Dimension1---Dimension2---etc
etc. for 100 rows

文件2

Company1---Factor1---Factor2---Factor3---Factor4---etc for 40
Company2---Factor1---Factor2---Factor3---Factor4---etc for 40
etc. for 100 rows

N.B。单个可视化需要涵盖所有40个因素,即40个因子= 1维。

档案3

Company1---Month1---Dimension4---Dimension5---Dimension6
Company1---Month2---Dimension4---Dimension5---Dimension6
Company1---Month3---Dimension4---Dimension5---Dimension6
etc for 100 companies x 12 months

我的目标是为40个因子中的每一个创建一个箱形图,以最有效的方式合并数据,因为100行只是一个小样本。决定是:合并数据与使用假团体。此决定也将在时间表上重复。如果我合并数据,我的100行将变为6万行。

我使用假组工作了。我无法使用reduce()来处理groupAll(),因此我收集每家公司的数据,然后处理它并创建一个假组。对于1000或5000家公司的文件,有更好的方法吗?

由于

艾玛

  var idDimBox = facts.dimension(function(d){ return d['id']; });
  var factorGrpBox = idDimBox.group().reduce(
    function(p,v){//addition function
      for (var i=0; i<factorFields[0].length; i++) { p[factorFields[0][i]] = v[factorFields[0][i]]; }
      return p;
  },
  function(p,v){//removal function

    for (var i=0; i<factorFields[0].length; i++) { p[factorFields[0][i]]=-1; }

    return p;
  },//end reduce Function

    function(){

      var obj = {};
      for (var i=0; i<factorFields[0].length; i++) {
        obj[factorFields[0][i]] = -1;
      }
      return obj;
    }

  );







var obj = factorGrpBox;//actually calls a separate function here

var tempFactor = obj.top(Infinity);//array of objects, 100 long
  for (var j=0; j<factorFields[0].length; j++) {
    factorFields[2][j] = [];
  }

  for (var i=0; i<tempFactor.length; i++) {
    for (var j=0; j<factorFields[0].length; j++) {
      factorFields[2][j].push(tempFactor[i].value[factorFields[0][j]]);
    }
  }

  fakeBoxPlotGroup = {all: function() {
    var myarr = [];
    for (var i=0; i<factorFields[0].length; i++) {
      var myobj = {};
      myobj.key = factorFields[0][i];
      myobj.value = factorFields[2][i];
      myarr.push(myobj);

    }
    return myarr;
  }}

0 个答案:

没有答案