In the example below, I am trying to sum by unique occurence of Respond_Id
. eg. in this case, it should be in total 3
, "Respond_Id"
being 258,261
and 345
.
This is my data:
{"Respond_Id":258,"Gender":"Female","Age":"18-21","Answer":424}, {"Respond_Id":258,"Gender":"Female","Age":"18-21","Answer":428}, {"Respond_Id":261,"Gender":"Male","Age":"22-26", "Answer":427}, {"Respond_Id":261,"Gender":"Male","Age":"22-26", "Answer":432}, {"Respond_Id":345,"Gender":"Female","Age":"27-30","Answer":424}, {"Respond_Id":345,"Gender":"Female","Age":"27-30","Answer":425}, {"Respond_Id":345,"Gender":"Female","Age":"27-30","Answer":433},
I know I should use group reduce for this, so I tried (adapted from an example):
var ntotal = answerDim.group().reduce( function(p, d) { if(d.Respond_Id in p.Respond_Ids){ p.Respond_Ids[d.Respond_Id]++; } else { p.Respond_Ids[d.Respond_Id] = 1; p.RespondCount++; } return p; }, function (p, d) { p.Respond_Ids[d.Respond_Id]--; if(p.Respond_Ids[d.Respond_Id] === 0){ delete p.Respond_Ids[d.Respond_Id]; p.RespondCount--; } return p; }, function () { return { RespondCount: 0, Respond_Ids: {} }; } );
Then:
numberDisplay .group(ntotal) .valueAccessor(function(d){ return d.value.RespondCount; }); dc.renderAll();
But seems not working. Does someone know how to make it work ? Thank you