agrupación múltiple de filtro cruzado
Frecuentes
Visto 714 equipos
1
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?
2 Respuestas
4
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
2
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 javascript dc.js crossfilter or haz tu propia pregunta.
Interesante, el filtro de velocidad de respuesta SO permite que transcurra un intervalo de dos horas y 30 minutos. ¡Tiene sentido! - Ellie Kesselman