Dies ist eine sehr grundlegende Frage, da ich gerade erst anfange, R zu verwenden, aber ich versuche, ein Balkendiagramm der Faktorzahlen in ggplot2 zu erstellen. Beim Plotten erhalten Sie 14 kleine, farbige Blips, die meine tatsächlichen Werte darstellen, und dann einen massiven grauen Balken am Ende der 5000-ish NAs in der Stichprobe (die Umfragedaten einer Frage, die nur für etwa 5% der Stichprobe gilt). Ich habe den folgenden Code ohne Erfolg ausprobiert:
ggplot(data = MyData,aes(x= the_variable, fill=the_variable, na.rm = TRUE)) +
geom_bar(stat="bin")
Die Hinzufügung des na.rm-Arguments hat hier keine offensichtliche Wirkung.
inzwischen
ggplot(data = na.omit(MyData),aes(x= the_variable, fill=the_variable, na.rm = TRUE)) +
geom_bar(stat="bin")
gibt mir
"Fehler: Ästhetik muss entweder die Länge eins oder die gleiche Länge wie die Daten haben"
wie das Anbringen der na.omit()
an der_Variable oder sowohl an MyData als auch an der_Variable.
Alles, was ich tun möchte, ist den riesigen NA-Balken aus meiner Grafik zu entfernen. Kann mir jemand bitte dabei helfen?
Sie können die Funktion subset
in ggplot2
verwenden. Versuche dies
library(ggplot2)
data("iris")
iris$Sepal.Length[5:10] <- NA # create some NAs for this example
ggplot(data=subset(iris, !is.na(Sepal.Length)), aes(x=Sepal.Length)) +
geom_bar(stat="bin")
Nur ein Update auf die Antwort von @ rafa.pereira . Da ggplot2
Teil von tidyverse
ist, ist es sinnvoll, die praktischen Tidyverse-Funktionen zu verwenden, um NAs zu entfernen.
library(tidyverse)
airquality %>%
drop_na(Ozone) %>%
ggplot(aes(x = Ozone))+
geom_bar(stat="bin")
Beachten Sie, dass Sie auch drop_na()
ohne Spaltenangabe verwenden können. Dann werden alle Zeilen mit NAs in einer beliebigen Spalte entfernt.
Nicht sicher, ob Sie das Problem gelöst haben. Für dieses Problem können Sie die Funktion "Filter" im dplyr-Paket verwenden. Die Idee ist, die Beobachtungen/Zeilen zu filtern, deren Werte der Variablen, die Sie interessieren, nicht NA sind. Als Nächstes erstellen Sie das Diagramm mit diesen gefilterten Beobachtungen. Sie finden meine Codes unten und beachten Sie, dass der gesamte Name des Datenrahmens und der Variablen aus der Aufforderung Ihrer Frage kopiert wird. Ich nehme an, Sie kennen die Betreiber der Rohrleitungen.
library(tidyverse)
MyDate %>%
filter(!is.na(the_variable)) %>%
ggplot(aes(x= the_variable, fill=the_variable)) +
geom_bar(stat="bin")
Sie sollten in der Lage sein, die ärgerlichen NAs auf Ihrem Plot zu entfernen. Hoffe das klappt :)
Das Hinzufügen von na.rm = TRUE zu Ihrem geom_bar () funktioniert außerdem.
ggplot(data = MyData,aes(x= the_variable, fill=the_variable, na.rm = TRUE)) +
geom_bar(stat="bin", na.rm = TRUE)
Ich bin mit einer Schleife in einer Zeitreihe auf dieses Problem gestoßen und dies wurde behoben. Die fehlenden Daten werden entfernt und die Ergebnisse werden sonst nicht beeinflusst.
Versuchen Sie stattdessen remove_missing
mit vars = the_variable
. Es ist sehr wichtig, dass Sie das Argument vars
setzen. Andernfalls entfernt remove_missing
alle Zeilen, die eine NA
in einer beliebigen Spalte enthalten !! Einstellung na.rm = TRUE
unterdrückt die Warnmeldung.
ggplot(data = remove_missing(MyData, na.rm = TRUE, vars = the_variable),aes(x= the_variable, fill=the_variable, na.rm = TRUE)) +
geom_bar(stat="bin")
Dieser Fehler "Fehler: Ästhetik muss entweder die Länge 1 oder die gleiche Länge wie die Daten haben" Bezieht sich auf das Argument aes (x, y) Ich habe es mit na.omit versucht () und funktionierte gut für mich.