agrupación múltiple de filtro cruzado

Mis datos son así.

{ date : "25-1-2012",
  sentiment : "Positive", could be positive,negative or neutral
  year: 2012
}

Mi codigo es asi

var dateDim = ndx.dimension(function(d) {return d.date;});

lo que quiero lograr es agrupar en la fecha donde podría saber en toda la fecha cuántos sentimientos fueron positivos y cuántos negativos. Luego, quiero usar fechas como eje x y contar los positivos, negativos y neutrales en esa fecha como eje Y. ¿Cómo puedo hacer eso?

preguntado el 12 de junio de 14 a las 11:06

2 Respuestas

Quería usar la fecha como eje X y el conteo de positivos, negativos y neutrales en esa fecha específica como eje Y en el gráfico lineal de dc.js – user3614894

Si necesita que se muestre usando dc.js, usaría reduce, vea el ejemplo en http://jsbin.com/fisawaqa/2/edit

var ndx = crossfilter(sentimentData);
var dateDimension = ndx.dimension(function (d) {
    return d.date;
});
function reduceAdd(p, v) {
    console.log(v);
    ++p.count;
    p.positive += v.sentiment == "Positive" ? 1 : 0;
    p.negative += v.sentiment == "Negative" ? 1 : 0;
    p.neutral += v.sentiment == "Neutral" ? 1 : 0;
    return p;
}
function reduceRemove(p, v) {
    --p.count;
    p.positive -= v.sentiment == "Positive" ? 1 : 0;
    p.negative -= v.sentiment == "Negative" ? 1 : 0;
    p.neutral -= v.sentiment == "Neutral" ? 1 : 0;
    return p;
}

function reduceInitial() {
    return {count: 0, positive: 0,negative:0,neutral:0};
}
var dateGroup = dateDimension.group().reduce(reduceAdd,reduceRemove,reduceInitial);

Respondido el 12 de junio de 14 a las 14:06

Interesante, el filtro de velocidad de respuesta SO permite que transcurra un intervalo de dos horas y 30 minutos. ¡Tiene sentido! - Ellie Kesselman

Cree dos dimensiones por fecha y sentimiento, filtre por fecha y luego agrupe por sentimiento:

"use strict";

var data = [
    { date: "25-1-2012",
        sentiment: "Positive",
        year: 2012
    },
    { date: "25-1-2012",
        sentiment: "Negative",
        year: 2012
    },
    { date: "25-1-2012",
        sentiment: "Positive",
        year: 2012
    },
    { date: "26-1-2012",
        sentiment: "Positive",
        year: 2012
    },
    { date: "27-1-2012",
        sentiment: "Negative",
        year: 2012
    }
];

var ndx  = crossfilter(data);

var dateDim = ndx.dimension(function(d) {return d.date;});
dateDim.filterExact("25-1-2012");
var sentimentDim = ndx.dimension(function(d) {return d.sentiment;});
var sentimentGroup = sentimentDim.group().reduceCount();
console.log(sentimentGroup.top(Infinity));

Respondido el 12 de junio de 14 a las 12:06

Quería usar la fecha como eje X y el recuento de positivos, negativos y neutrales en esa fecha específica como eje Y en el gráfico lineal de dc.js. user3614894

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.