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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert