GNU R: factor
factor()
erzeugt ein Faktor-Objekt.
Handhabung
[Bearbeiten]Faktoren 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
[Bearbeiten]Manchmal 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
[Bearbeiten]In 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