2015-11-08 53 views
2

我試圖使用Rcharts跨多個記錄區域(彼此堆疊單獨的組值)創建堆疊條形圖。數據的格式與下面類似。R - 添加零值條目,以便所有組都具有相同項目的條目

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 

這將最終被放置在閃亮應用的反應性組分中,從而特別高效的解決方案將是巨大的

回答

2

我們可以使用complete()tidyr包:

這是一個wrap(),left_join()和replace_na,這對 有用,用於完成數據的缺失組合。它將 隱式缺少值顯式缺少值。

library(tidyr) 
library(rCharts) 

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

分組

enter image description here

疊放

enter image description here


數據

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)) 
相關問題