首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用交叉过滤器和DC.js处理丢失的数据?

如何使用交叉过滤器和DC.js处理丢失的数据?
EN

Stack Overflow用户
提问于 2015-07-29 11:55:24
回答 1查看 1.2K关注 0票数 0

让下面的数据集:

代码语言:javascript
运行
复制
var dataset = [
    {
        "user": "u1",
        "question1": "answer1",
        "question2": "answer2",
        ...
    },
    ...
];

假设此数据集未完成:一些用户可能回答了一个问题,但没有回答另一个问题。因此,此数据集有一些空白,其中没有出现值"questionX“。

假设我们为每个问题创建了相关的饼图,如下所示:

代码语言:javascript
运行
复制
var questions = ["question1", "question2", ...];
var cf = crossfilter(dataset);

for (var i = 0; i < questions.length; i++) {

    var questionDim = cf.dimension(function(d) { return d[questions[i]]});
    var questionGrp = questionDim.group().reduceCount();

    plotPieChart("#dc-" + questions[i], questionDim, questionGrp); // helper function to plot standard DC pie chart based on a dimension and group.
}

似乎组没有正确地处理缺失的值,并且仍然将缺失的点分类为第一个可能的类别。

  1. 是虫子吗?
  2. 如果不是,一个可能的解决方案是对数据集进行预处理,并添加一个虚拟答案(例如'NA')。然而,这样做,“NA”的答案就会像馅饼一样出现。因此,如何从显示的结果中删除这个虚拟饼呢?
  3. 是否有更好的方法来处理这些问题?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-29 14:03:52

不,这不是虫子。交叉过滤器的尺寸必须是自然有序或奇怪的事情发生。

您应该定义维度来处理未定义的值。你可以这样做:

代码语言:javascript
运行
复制
var questionDim = cf.dimension(function(d) { return d[questions[i]] ? d[questions[i]] : "No answer"});

然后,当你定义你的dc.js图表时,你可以过滤掉你不想要的数据,如果你不想在你的饼图中显示非答案(尽管你可能应该显示它们,以便让观众了解回答上述问题的人的比例):

代码语言:javascript
运行
复制
dc.pieChart('#pie-chart')
  .group(questionGrp)
  .data(function(group) {
     return group.all()
                 .filter(function(d) { return d.key !== "No answer"; }); 
  })
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31699747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档