我尝试使用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应用程序的反应组件中,因此特别有效的解决方案会很棒
答案 0 :(得分:2)
我们可以使用complete()
包中的tidyr
:
这是expand(),left_join()和replace_na的包装 用于完成缺失的数据组合。事实证明 隐式地将值缺失为明确缺失的值。
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))