Javascript 如何将交叉筛选组解组以将值带入新组?
在crossfilter.js中,我想根据一个键进行分组,减少以获得计数,然后取消分组以将计数带入原始数据结构,这样我就可以根据另一个键进行分组并获得总计数 考虑到以下输入数据,我希望每天计算id:Javascript 如何将交叉筛选组解组以将值带入新组?,javascript,d3.js,dc.js,crossfilter,Javascript,D3.js,Dc.js,Crossfilter,在crossfilter.js中,我想根据一个键进行分组,减少以获得计数,然后取消分组以将计数带入原始数据结构,这样我就可以根据另一个键进行分组并获得总计数 考虑到以下输入数据,我希望每天计算id: {day: 'Mon', id: 1} {day: 'Fri', id: 3} {day: 'Tue', id: 1} {day: 'Mon', id: 2} {day: 'Wed', id: 1} 每天id计数的结果是: {day: 'Mon', count: 2} {day: 'Tue', c
{day: 'Mon', id: 1}
{day: 'Fri', id: 3}
{day: 'Tue', id: 1}
{day: 'Mon', id: 2}
{day: 'Wed', id: 1}
每天id计数的结果是:
{day: 'Mon', count: 2}
{day: 'Tue', count: 1}
{day: 'Wed', count: 1}
{day: 'Thu', count: 0}
{day: 'Fri', count: 1}
然后我想把这些计数带回到未分组的数据中,例如
{day: 'Mon', id: 1, count: 2}
{day: 'Fri', id: 3, count: 1}
{day: 'Tue', id: 1, count: 1}
{day: 'Mon', id: 2, count: 2}
{day: 'Wed', id: 1, count: 1}
这样我就可以在id上分组,在计数上减少计数,例如
{id:1 , totalcount: 4}
{id:2 , totalcount: 2}
{id:3 , totalcount: 1}
那么,这种类型的解组是可能的,还是可以通过一种变通方法来实现?我在这里为dc.js行图实现使用交叉过滤器,因此该实现必须像dc.js的其余部分一样可以动态更新
编辑1:
我把一个给定的句子分成不同字长的重叠子串(短语),每个子串(短语)由相同的句子ID标识。我有一个句子数据集,我想用DC.js行图总结一下,它应该显示最能代表数据集中频繁出现的短语的句子
所以我首先想得到短语的柱状图计数,看看它们出现的频率,所以我有一个数据结构,其中包含整个句子数据集的提取短语。然后,我想计算这些直方图计数,并对每个句子的计数求和或平均值,其中可能有多个短语是从给定的句子中提取的
因此,逻辑是首先看哪些短语经常出现,但不是显示短语直方图,而是显示一个句子行图,给出了代表频繁短语的完整句子
探索crossfilter.dimension.group数据结构我可以看到从组到组成维度数据向量的索引映射,因此必须能够将组值带入原始数据向量。我真的想不出一种方法来实现这一点。但你为什么要这么做?如果说id 1的计数是4,你会怎么说?也许,如果我理解了您试图用这种方法传达的信息,就可以更清楚地了解如何实现它。我有时称之为“双重减少”,这是交叉过滤器不直接支持的。在这里,我不认为这有什么意义:“Mon”有多个
id
s,所以你将计数复制回两个id
s,然后再计数两次:当只有5条记录时,总数是7。确实很难看出这一点,但我试图在上面的编辑中对此进行解释。我猜您所指的索引映射是groupIndex
-afaik这是不可公开访问的,而且它仍然需要一些时间,因为它是从对象映射到组的,而不是相反。不过这是个好主意!谢谢你,戈登。DC.js太棒了。我会努力找到一个合乎逻辑的解决办法来实现这个目标。