GNU R: factor
factor()
erzeugt ein Faktor-Objekt.
Handhabung
BearbeitenFaktoren sind in R nominale Daten, wie beispielsweise die Unterteilung von Probanden nach dem Geschlecht. Um mehrere Daten einem Faktor zuzuordnen, wird der factor
-Befehl mit dem c
-Befehl kombiniert:
geschlecht <- factor(c
("m", "m", "w", "m", "w", "w", "w", "m", "m", "w", "m", "w"))
Wenn wir nun das Objekt geschlecht
aufrufen, erhalten wir:
geschlecht [1] m m w m w w w m m w m w Levels: m w
Es werden die Daten, die in geschlecht
enthalten sind, angezeigt. Am Ende der Ausgabe wird mit Levels: m w
angezeigt, dass der Faktor geschlecht
die zwei Ausprägungen "m" und "w" hat.
Level löschen
BearbeitenManchmal kann es vorkommen, dass ein Factor noch Ausprägungen (Levels) besitzt, die im Datensatz gar nicht mehr vorkommen.
beispiel <- factor(c
("Blau", "Weiss", "Links", "Weiss", "Links", "Links"))
Das Objekt sieht nun so aus:
beispiel [1] Blau Weiss Links Weiss Links Links Levels: Blau Links Weiss
Wenn wir jetzt den ersten Eintrag (Blau) löschen...
beispiel <- beispiel[-1]
...und das Objekt erneut betrachten...
beispiel [1] Weiss Links Weiss Links Links Levels: Blau Links Weiss
...sehen wir, dass die Level "Blau" immernoch existiert, obwohl kein Eintrag im Objekt mehr diese Level besitzt. Um die Level "Blau" nun zu löschen, gibt man ein:
beispiel <- beispiel[drop=TRUE]
Wenn das Objekt nun aufgerufen wird
beispiel [1] Weiss Links Weiss Links Links Levels: Links Weiss
sieht man, dass die nicht länger benötigte Level "Blau" gelöscht wurde.
Probleme und Fehlerquellen
BearbeitenIn anderen Statistikanwendungen ist es üblich, Faktoren numerisch einzugeben und in Bedingungen zu verwenden. Dies ist auch in R möglich, allerdings nur, wenn eine Klassenumwandlung vorgenommen wird:
> unclass(geschlecht) # Umwandlung in einen Integervektor [1] 1 1 2 1 2 2 2 1 1 2 1 2 attr(,"levels") [1] "m" "w" > geschlecht==1 # funktioniert nicht, da "m" oder "w" nicht == 1 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE > unclass(geschlecht)==1 # korrekte Bedingung TRUE TRUE FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE TRUE FALSE