2016-04-08 13 views
0

Wie kann ich einen gestapelten Barplot mit na Werten mit dplyr und ggplot2 erstellen?dplyr/ggplot2: Zeitdiagramm mit gestapelten Balken mit na Werten

x-Achse: Jahr
Y-Achse: Anzahl der Beobachtungen und die Zahl der NA

data <- data.frame(year = c(2015, 2015, 2016, 2016), 
        column2 = c(4, NA, 9, 1)) 


library (dplyr) 

missing_data <- data %>% 
        count(year, complete.cases(column2)) 

Meine Ergebnisse

year complete.cases(column2)  n 
(dbl)      (lgl) (int) 
1 2015     FALSE  1 
2 2015     TRUE  1 
3 2016     TRUE  2 

, was ich versucht:

library(ggplot2) 
na_plot <- ggplot (missing_data, aes(x=year, y=n)) 
na_plot+ 
geom_bar(stat="identity", aes(fill = complete.cases(column2)) 
+0

Würde "group = complete.cases (column2)" innerhalb der aes Anweisung der Trick hinzufügen? –

+0

Sie können Back-Ticks um nicht syntaktisch gültige Namen verwenden: \ 'complete.cases (column2) ' – aosmith

Antwort

1

ich denke, die Funktion complete.cases stört irgendwie die Variable Der Name. Versuchen Sie Umbenennen (auch factor die year):

data <- data.frame(year = c(2015, 2015, 2016, 2016), 
        column2 = c(4, NA, 9, 1)) 

library(dplyr) 
library(ggplot2) 

missing_data <- data %>% 
    count(year, complete.cases(column2)) 

names(missing_data)[2] = "col2" 

na_plot <- ggplot(missing_data, aes(x=factor(year), y=n)) 
na_plot + geom_bar(stat="identity", aes(fill = col2)) 
+0

Es funktioniert super. Ich versuchte mit dplyr umbenennen Funktion ohne Erfolg. Kann ich TRUE oder FALSE in der Handlung ändern? – Wilcar

+0

@Wilcar du meinst wie Variable Ebenen umschreiben? Versuchen Sie '? Ifelse'. – jakub

+0

Wie kann ich ifelse verwenden? – Wilcar