Rekodierung "NA" zuordnen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Schlesinger
Beiträge: 11
Registriert: Mi Mär 08, 2017 2:41 pm

Rekodierung "NA" zuordnen

Beitrag von Schlesinger »

Hallo R-Forum,

ich habe einen Merkmalsträger mit 4 Ausprägungen: Trifft nicht zu, Ja, Nein und Keine Angabe.
Für meine weiteres Vorgehen brauche ich nur die 2 Ausprägungen Nein und Ja, die ich als 0 und 1 kodieren möchte. Die restlichen (Trifft nicht zu und Keine Angabe) möchte ich NA's zuordnen.

Code: Alles auswählen

Datensatz$Linkshänder <- Datensatz$L22
Datensatz$Linkshänder[Datensatz$L22==0] <- NA # Trifft nicht zu (nicht bestimmbar)
Datensatz$Linkshänder[Datensatz$L22==9] <- NA # Keine Angabe
Datensatz$Linkshänder[Datensatz$L22==1] <- 1  # Linkshänder
Datensatz$Linkshänder[Datensatz$L22==2] <- 0  # Kein Linkshänder
Datensatz$Linkshänder <- as.factor(Datensatz$Linkshänder)
table(Datensatz$L22,Datensatz$Linkshänder)
Wenn ich nun

Code: Alles auswählen

Datensatz$Linkshänder[Datensatz$L22==0] <- NA # Trifft nicht zu (nicht bestimmbar)
Datensatz$Linkshänder[Datensatz$L22==9] <- NA # Keine Angabe
ausführe gibt es keine Problemmeldung, wenn ich mir dann aber die Zuordnung anschaue:

Code: Alles auswählen

table(Datensatz$L22,Datensatz$Linkshänder)
werden weiterhin Personen bei "Trifft nicht zu" und "Keine Angabe" angezeigt und bei "NA" steht weiterhin 0.

Vermutlich habe ich einen einfachen Anfängerfehler gemacht - aber wo? :oops:
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Rekodierung "NA" zuordnen

Beitrag von jogo »

Hallo Schlesinger,

handelt es sich bei Datensatz$L22 und Datensatz$Linkshänder um Faktoren?
Faktoren behalten in ihrer Definition auch die levels, für die es kein Element mit diesem Wert gibt - da hilft ggf. nur droplevels()
Was liefert denn

Code: Alles auswählen

summary(Datensatz$L22)
summary(Datensatz$Linkshänder)
Gruß, Jörg
Schlesinger
Beiträge: 11
Registriert: Mi Mär 08, 2017 2:41 pm

Re: Rekodierung "NA" zuordnen

Beitrag von Schlesinger »

Also Summary liefert:

> summary(Datensatz$L22)
TRIFFT NICHT ZU: 4 JA: 833 NEIN: 1085 KEINE ANGABE: 6
> summary(Datensatz$Linkshänder)
TRIFFT NICHT ZU: 4 JA: 833 NEIN: 1085 KEINE ANGABE: 6


Es sollte aber so aussehen:
> summary(Datensatz$L22)
TRIFFT NICHT ZU: 4 JA: 833 NEIN: 1085 KEINE ANGABE: 6

> summary(Datensatz$Linkshänder)
TRIFFT NICHT ZU: 0 JA: 833 NEIN: 1085 KEINE ANGABE: 0 NA: 10



Also ich möchte später z.B. Regressionen oder Hypothesen-Tests durchführen, deshalb möchte ich aber die "Trifft Nicht zu" und "Keine Angaben" rausschmeißen bzw. "NA" zuordnen - ich versteh nicht warum er mir keine Fehlermeldung bei der Zuordnung gibt (es also scheinbar ausführt) aber, wenn ich mir mit z.B. Summary die Zuordnungen anzeigen lasse alles unverändert angezeigt wird.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Rekodierung "NA" zuordnen

Beitrag von jogo »

ok, damit hast Du implizit meine Frage beantwortet:
es handelt sich sehr wohl um Faktoren.

Es gibt noch eine weitere Eigenschaft von Faktoren, die für Dich hinderlich ist:
Faktoren nehmen keine zusätzlichen levels auf - insbesondere NA bereitet zusätzliche Schwierigkeiten.

Gruß, Jörg
p.s.: Kannst Du dput(Datensatz$L22) liefern?
Schlesinger
Beiträge: 11
Registriert: Mi Mär 08, 2017 2:41 pm

Re: Rekodierung "NA" zuordnen

Beitrag von Schlesinger »

Wenn ich den Befehl ausführe wird nur der Befehl angezeigt sonst nichts :?
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Rekodierung "NA" zuordnen

Beitrag von jogo »

Hier ein kleines Beispiel:

Code: Alles auswählen

L22 <- rep(as.factor(c("TRIFFT NICHT ZU", "JA", "NEIN", "KEINE ANGABE")), c(4, 833, 1085, 6) )
summary(L22)

sum(L22==0)
sum(L22==9)
sum(L22==1)
sum(L22==0)

# oder kurz
table(as.integer(L22))
Zumindest ist jetzt klar, warum keine Ersetzung/Rekodierung erfolgt ist.
Wie kommst Du darauf einen Faktor, der nur vier levels hat, zu testen, ob er den Wert 9 annehmen könnte?
war das die ursprüngliche Kodierung?

Du möchtest dies:

Code: Alles auswählen

library("car")

Linksh <- recode(L22, "c('TRIFFT NICHT ZU', 'KEINE ANGABE')=NA; 'JA'=1; 'NEIN'=0")
table(Linksh)
summary(Linksh) # oder table(Linksh, useNA = "ifany")
Gruß, Jörg
Schlesinger
Beiträge: 11
Registriert: Mi Mär 08, 2017 2:41 pm

Re: Rekodierung "NA" zuordnen

Beitrag von Schlesinger »

Genau das war die Ursprungskodierung ;)

Ja ich hab jetzt auf jeden Fall meinen Fehler erkannt - vielen Dank ! ;) :)
Antworten