2017-05-11 5 views
1

私は以下の問題を抱えています。(q1、q2、q3、q4、および外れ値)それぞれの遅延時間を表すサービス(A、B、C、D)ごとにboxplot(dc.js付き)を作成します。クロスフィルターで繰り返しデータを削除する方法は?

私のデータにはID、カテゴリ、所要時間などのデータが含まれていますが、他のグラフィックスにとって重要なその他の追加データが原因で繰り返し行があるという問題があります。

例えば、

ID /カテゴリ/時間/他のデータ

1/B/2/...

155/A/51/..

155// 51/..

156/A/"のNaN"/..

157/C/10/..

など

追加データを追加する前に、私は繰り返しデータには問題がなかったし、次のコードを使用していました。

var categorydim=ndx.dimension(function(d){return d["category"]}); 
var categorydim.group().reduce(
    function(p,v){ 
     if (v["time"]>0.){ 
     p.push(v["time"])}; 
     return p; 
    }, 
    function(p,v){ 
     if (v["time"]>0.){ 
     p.splice(p.indexOf(v["time"]),1)}; 
     return p; 
    }, 
    function(){ 
     return[]; 
    } 
) 

しかし、今私は例えばid 155の単一の値にとどまっていなければなりません。クロスフィルターでこれを行うことをお考えですか?またはreductio.jsで?

繰り返しデータを除外する方法は?

+0

だから、問題が一つだけ '155'を持っていたとき、あなたはグループ' {鍵を得たことです、値:[51]} '重複すると{key: 'A'、value:[51,51}}'となります。 –

答えて

1

私がこの問題を理解していると仮定すると、すでに見たユニークなIDを追跡する必要があります。 Reductioは、集計と集計で例外集計を行いますが、あなたのシナリオではこれを行いません。このようなものはうまくいくはずです。あなたが一緒に作業例を置くことができるならば、私はこのコードを確認させていただきます。「A」:

var categorydim=ndx.dimension(function(d){return d["category"]}); 
var categorydim.group().reduce(
    function(p,v){ 
     // Ignore record if time is invalid or key has already been added. 
     if (v["time"]>0. && !p.keys[v['Id']]){ 
      p.values.push(v["time"]) 
      p.keys[v['Id']] = 1 
     } else if(v["time"]>0.) { 
      // Time is valid and key has shown up 1 or more times already 
      p.keys[v['Id']]++ 
     } 
     return p; 
    }, 
    function(p,v){ 
     // Ignore record if time is invalid or key is the "last" of this key. 
     if (v["time"]>0. && p.keys[v['Id']] === 1){ 
      p.values.splice(p.values.indexOf(v["time"]), 1) 
      p.keys[v['Id']] = 0 
     } else if(v["time"]>0.) { 
      // Key is greater than 1, so decrement 
      p.keys[v['Id']]-- 
     } 
     return p; 
    }, 
    function(){ 
     return { 
      keys: {}, 
      values: [] 
     }; 
    } 
) 
+0

多くのありがとうございました。私はboxplotを作成するために値をソートしなければならなかったと思っていましたが、それは私が追加しなければならなかったdc.js boxplotと完璧に働いていました(。(d){return d.value.values} ) もう一度ありがとうございます – ajey2987

+0

Hmmm実際には、これはレコードを削除するには速すぎるため、フィルタリングで爆発することになります。実際には各キーの数を維持する必要があります。更新しようとします –

+0

私は、繰り返されないデータが必要です。すなわち、各IDのタイムスタンプがあります。 – ajey2987

関連する問題