添加零值条目,以便所有组都具有相同项目的条目

Adding zero valued entries so that all groups have entries for the same items

我正在尝试使用 Rcharts 创建一个跨越多个记录区域的堆叠条形图(将单独的组值堆叠在一起)。数据的格式类似于以下内容。

Region | Group | Value
----------------------
USA    |   A   |   5
USA    |   B   |   3
USA    |   C   |   1
UK     |   A   |   4
UK     |   B   |   6
France |   C   |   3

使用下面的代码生成一个分组条形图,效果很好。然而,堆叠按钮不会改变情节。

nPlot(Value ~ Region, group = 'Group', 
      data = example_data, 
      type = 'multiBarChart')

查看 this 线程似乎问题可能在于某些地区没有所有当前组的条目(例如,英国缺少 C 的条目,法国缺少 A 和 B 的条目) .

我不确定的是如何添加值 == 0 的条目,以便所有区域都为每个当前组都有一个条目。这样上面的数据就变成了这个(条目的顺序无关紧要)。

Region | Group | Value
----------------------
USA    |   A   |   5
USA    |   B   |   3
USA    |   C   |   1
UK     |   A   |   4
UK     |   B   |   6
UK     |   C   |   0
France |   A   |   0
France |   B   |   0
France |   C   |   3

这最终将被放置在 Shiny 应用程序的反应组件中,因此特别有效的解决方案会很棒

我们可以使用 tidyr 包中的 complete()

This is a wrapper around expand(), left_join() and replace_na that's useful for completing missing combinations of data. It turns implicitly missing values into explicitly missing values.

library(tidyr)
library(rCharts)

df %>% 
  complete(Region, Group, fill = list(Value = 0)) %>%
  nPlot(Value ~ Region, group = 'Group', 
        data = ., 
        type = 'multiBarChart')

分组

堆叠


数据

df <- structure(list(Region = structure(c(3L, 3L, 3L, 2L, 2L, 1L), .Label = c("France", 
"UK", "USA"), class = "factor"), Group = structure(c(1L, 2L, 
3L, 1L, 2L, 3L), .Label = c("A", "B", "C"), class = "factor"), 
    Value = c(5L, 3L, 1L, 4L, 6L, 3L)), .Names = c("Region", 
"Group", "Value"), class = "data.frame", row.names = c(NA, -6L))