2017-02-25 6 views
-1

In einem Versuch, eine lm() auszuführen, gab R einen Fehler von Faktoren mit weniger als 2 Ebenen zurück. Im Folgenden finden Sie eine kurze Tabelle, in der Typ und 3-Takte von "Ebenen" aufgelistet sind.nicht übereinstimmende Ausgabe von unique() und nlevels()

Warum würde length(unique(x[,i])) nicht die gleiche Ausgabe wie nlevels(x[,i]) bieten?

levels

+1

können Sie mehr Ebenen als eindeutige Werte haben ... siehe 'x = Faktor (c ("a", "b"), Ebenen = c ("a", "b", "c")). Eine Möglichkeit, das kann passieren, indem Sie Ihre Daten unterteilen .. Beispiel. 'd1 = data.frame (x = Buchstaben [1: 4]); d2 = d1 [d1 $ x% in% c ("a", "b"),, drop = FALSE]; str (d2 $ x) '. 'dropevels' ist eine nützliche Funktion – user20650

Antwort

1

Ein möglicher Grund ist, dass NA als eindeutiger Wert gezählt wird, aber nicht ein Niveau in einem Faktor:

> a <- as.factor(c("A","B","A",NA)) 
> unique(a) 
[1] A B <NA> 
Levels: A B 
> length(unique(a)) 
[1] 3 
> levels(a) 
[1] "A" "B" 
> nlevels(a) 
[1] 2 
+0

Dies ist ein wertvoller Hinweis, würde aber nur für die Erkennung von 1-Level zählen. In meinem 4. Faktor von oben habe ich 10 eindeutige Werte und nlevels = 0. – braxtonlewis

+0

@braxtonlewis, Sie können feststellen, dass diese 'nlevels() = 0' Datensätze alle für Integer oder Numerik sind. Dies, weil 'unique' auf alle Typen angewendet werden kann,' nlevels' jedoch nur auf 'factor' angewendet werden kann. –

Verwandte Themen