Interpretation der fehler in r: 'max' nicht signifikant für faktoren


An der einen oder anderen Stelle kann in R der folgende Fehler auftreten:

 'max' not meaningful for factors

Dies besagt einfach, dass Sie versuchen, den „Max“ einer Variablen zu ermitteln, die zur Klasse „ factor“ gehört.

Dieser Fehler wird beispielsweise generiert, wenn wir versuchen, das Maximum des folgenden Vektors zu ermitteln:

 #create a vector of class vector
factor_vector <- as.factor(c(1, 7, 12, 14, 15))

#attempt to find max value in the vector
max(factor_vector)

#Error in Summary.factor(1:5, na.rm = FALSE): 
# 'max' not meaningful for factors

Per Definition sind die Werte eines Faktorvektors nomineller Klasse, was bedeutet, dass es keine sinnvolle Reihenfolge der Werte gibt. Es gibt also keinen „maximalen“ Wert.

Eine einfache Lösung zum Ermitteln des Maximums eines Faktorvektors besteht darin, ihn einfach in einen Zeichenvektor und dann in einen Zahlenvektor umzuwandeln:

 #convert factor vector to numeric vector and find the max value
new_vector <- as.numeric(as.character(factor_vector))
max(new_vector)

#[1] 15

Wenn Ihr Faktorvektor lediglich die Faktornamen enthält, ist es nicht möglich, den Maximalwert zu finden, selbst nach der Konvertierung des Faktorvektors in einen numerischen Vektor, da es keinen Sinn macht, den „Max“ einer Liste von Faktoren zu ermitteln. Namen.

 #create factor vector with names of factors
factor_vector <- as.factor(c("first", "second", "third"))

#attempt to convert factor vector into numeric vector and find max value
new_vector <- as.numeric(as.character(factor_vector))
max(new_vector)

#Warning message:
#NAs introduced by coercion 
#[1] NA

Es ist zu beachten, dass R die maximalen Zahlenvektoren, Datumsvektoren und Zeichenvektoren problemlos finden kann:

 numeric_vector <- c(1, 2, 12, 14)
max(numeric_vector)

#[1] 14

character_vector <- c("a", "b", "f")
max(character_vector)

#[1] “f”

date_vector <- as.Date(c("2019-01-01", "2019-03-05", "2019-03-04"))
max(date_vector)

#[1] "2019-03-05"

Wenn Sie also versuchen, den Maximalwert in einem Vektor zu finden, stellen Sie sicher, dass Ihr Vektor nicht vom Typ Faktor ist.

Einen Kommentar hinzufügen

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