So beheben sie in r: ungültige faktorstufe, na generiert
Eine Warnmeldung, die bei der Verwendung von R auftreten kann, ist:
Warning message: In `[<-.factor`(`*tmp*`, iseq, value = "C"): invalid factor level, NA generated
Diese Warnung tritt auf, wenn Sie versuchen, einer Faktorvariablen in R einen Wert hinzuzufügen, der noch nicht als definierte Ebene vorhanden ist.
Das folgende Beispiel zeigt, wie auf diese Warnung in der Praxis reagiert werden kann.
So reproduzieren Sie die Warnung
Angenommen, wir haben den folgenden Datenrahmen in R:
#create data frame
df <- data. frame (team=factor(c('A', 'A', 'B', 'B', 'B')),
dots=c(99, 90, 86, 88, 95))
#view data frame
df
team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95
#view structure of data frame
str(df)
'data.frame': 5 obs. of 2 variables:
$ team: Factor w/ 2 levels "A","B": 1 1 2 2 2
$ points: num 99 90 86 88 95
Wir sehen, dass die Teamvariable ein Faktor mit zwei Ebenen ist: „A“ und „B“.
Nehmen wir nun an, wir versuchen, am Ende des Datenrahmens eine neue Zeile hinzuzufügen, indem wir den Wert „C“ für team verwenden:
#add new row to end of data frame
df[nrow(df) + 1,] = c('C', 100)
Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = "C"):
invalid factor level, NA generated
Wir erhalten eine Warnmeldung, da der Wert „C“ noch nicht als Faktorstufe für die Teamvariable existiert.
Es ist wichtig zu beachten, dass dies nur eine Warnmeldung ist und R den Zeilenumbruch weiterhin am Ende des Datenrahmens hinzufügt, jedoch den NA- Wert anstelle von „C“ verwendet:
#view updated data frame
df
team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95
6 NA 100
So vermeiden Sie die Warnung
Um die Warnung wegen einer ungültigen Faktorebene zu vermeiden, müssen wir die Faktorvariable zunächst in eine Zeichenvariable umwandeln und können sie dann nach dem Hinzufügen der neuen Zeile wieder in eine Faktorvariable umwandeln:
#convert team variable to character
df$team <- as. character (df$team)
#add new row to end of data frame
df[nrow(df) + 1,] = c('C', 100)
#convert team variable back to factor
df$team <- as. factor (df$team)
#view updated data frame
df
team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95
6 C 100
Beachten Sie, dass es uns gelingt, am Ende des Datenrahmens erfolgreich eine neue Zeile hinzuzufügen und eine Warnmeldung zu vermeiden.
Wir können auch überprüfen, dass der Wert „C“ als Faktorstufe zur Teamvariablen hinzugefügt wurde:
#view structure of updated data frame
str(df)
'data.frame': 6 obs. of 2 variables:
$ team: Factor w/ 3 levels "A","B","C": 1 1 2 2 2 3
$points: chr "99" "90" "86" "88" ...
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in R beheben können:
So beheben Sie das Problem in R: Argumente umfassen eine unterschiedliche Anzahl von Zeilen
So beheben Sie in R: Fehler bei der Auswahl nicht verwendeter Argumente
So reparieren Sie in R: Der Ersatz hat die Länge Null