2015-01-13 3 views
0

При применении фильтра к группе изменения в фильтрации не отражаются в моей группе, созданной с помощью карты. Я хочу, чтобы изменения фильтровать вниз - илиУменьшение не отражает фильтрацию размера

Мои данные настройки обычно:

var rides = crossfilter(data), 
all = rides.groupAll(), 
gender = rides.dimension(function(d) { return d.gender; }), 
gendersAvg = gender.group().reduce(reduceAddGender, reduceRemoveGender, reduceInitialGender).all(), 

Моя карта уменьшить функции устанавливаются следующим образом:

function reduceAddGender(p, v) { 
       p.count++; 
       return p; 
      } 
    function reduceRemoveGender(p, v) { 
       p.count--; 
       return p; 
    } 
    function reduceInitialGender() { 
       return { 
        count: 0 
       }; 
    } 

Я выполняю свою фильтрацию как это:

gender.filter(function(d){ return d === parseInt(z[1]) || d === parseInt(z[0]) }); 

Все мои измерения отражают фильтр, кроме одного. Когда я ищу значения GendersAvg постфильтрации, эти значения не отражают фильтры.

Идеи? Вызов среднего значения во второй раз также не меняет его значений.

+0

Значения групп Crossfilter рассчитываются на основе фильтров по размерам * other *, чем размер, на котором определена группа. Фильтры в собственном измерении группы игнорируются. См. Https://github.com/square/crossfilter/wiki/API-Reference#dimension_group –

+0

Спасибо. Есть ли решение? –

+1

Зависит от того, что вы хотите сделать. Вы можете создать второе измерение и сделать свой фильтр на этом, тогда ваше исходное измерение будет отфильтровано, но если размеры идентичны, обычно нет причин для этого, потому что все, что вы делаете, - это выбор одного или нескольких из групп. В этом случае вы можете просто найти нужную группу напрямую с помощью gendersAvg.all(). Filter (function (d) {return d.key === parseInt (z [1]) || d.key == = parseInt (z [0])}); –

ответ

0

В конце концов, я решил создать отдельное измерение, выполнив мою фильтрацию таким образом, чтобы все группы отражали его значения.

Смежные вопросы