Seite 1 von 1

Fehlender Werte für Dummykodierung benutzen

Verfasst: So Okt 27, 2019 3:04 pm
von farngarten
Hallo , wie kann ich denn fehlende Werte in der Dummykodierung als Refenzkategorie benutzen?
die Variable v_311 (Art der Religion) wurde nur bei Teilnehmer aufgerufen , die vorher v_304 mit (2) "religiös aber nicht praktizierend " oder (3) "religiös" beantwortet haben. Die 1er Kandidaten (nicht religiös) erscheinen bei v_311 als fehlender Wert.

Ich habe beim Faktorisieren versucht, die -77 einzubeziehen.

Code: Alles auswählen

k$v_311 <- factor(k$v_311, levels <- c(1,2,3,4,5,6,7,8,-77), labels <- c( "Christ", 
                                                                      "Jude", "Mos_sun", "Mos_schi", "Mos_ale", 
                                                                      "Budd", "Hindu", "sonst", "Atheist"))
aber wenn ich dann eine Tabelle anzeigen lassen

Code: Alles auswählen

table(k$v_304)
table(k$v_311)
dann zeigt er die Atheisten mit 0 an. siehe Bild. Ich würde gern die Variable v_311 für eine Dummykodierung nutzen. Verkürzter Datensatz anbei. Danke für eure Hilfe. Grüße Martin
Bild_2019_10_27_14_58_03_507.png
Bild_2019_10_27_14_58_03_507.png (5.58 KiB) 365 mal betrachtet

Re: Fehlender Werte für Dummykodierung benutzen

Verfasst: Mo Okt 28, 2019 9:45 am
von student
Hallo,

schau mal hier: https://www.r-statistik.de/R_erweitern/Tipps-Tricks/tipps-tricks.html#FehlendeWerteNA

Re: Fehlender Werte für Dummykodierung benutzen

Verfasst: Mo Okt 28, 2019 10:12 am
von bigben
Mach viele kleine Schritte, dann fallen Fehler leichter auf:

Code: Alles auswählen

k <- read.csv2("http://forum.r-statistik.de/download/file.php?id=738")
str(k)

# die Codierung schreibe ich gut lesbar in eine Funktion
religion = Vectorize(function(zahl){
  if(zahl == 1) return("Christ")
  if(zahl == 3) return("Sunnit")
  if(zahl == 8) return("Sonstige")
  if(zahl == -77) return("Atheist")
  warning("no such religion coded")
  return(NA_character_)
})

k$v_311u <- religion(k$v_311) # Codierungsfunktion anwenden
  
k$v_311f <- factor(k$v_311u) # in Faktor umwandeln
str(k$v_311f) 
table(k$v_311f)  # Jetzt haben die Level alle vernünftige Namen

k$v_311f <- relevel(k$v_311f, base="Atheist") #stellt sicher, dass Atheist der Baselevel ist.

Re: Fehlender Werte für Dummykodierung benutzen

Verfasst: Mo Okt 28, 2019 6:57 pm
von farngarten
danke , ich probier das gleich

Re: Fehlender Werte für Dummykodierung benutzen

Verfasst: Do Okt 31, 2019 6:02 pm
von farngarten
Hallo ,
leider funktioniert es nicht bei mir.
Bild_2019_10_31_17_38_12_992.png
Bild_2019_10_31_17_38_12_992.png (11.65 KiB) 303 mal betrachtet
Den Hinweis von Student habe ich alternativ auch probiert. NAs in eine 9 zu codieren.

Code: Alles auswählen

k[is.na(k$v_311),"NA"] <- 9
Wenn ich k$v_311 anschaue, sind die NAs immer noch da. Was mache ich falsch?

Danke Gruß

Re: Fehlender Werte für Dummykodierung benutzen

Verfasst: Do Okt 31, 2019 9:11 pm
von bigben
Wenn es mit demo.csv läuft, mit Deinen Daten aber nicht, dann taugt demo.csv halt nicht als Beispiel für Deine Daten. Deinem Post ist aber nicht einmal zu entnehmen, ob der Fehler mit demo,csv auch auftritt oder nicht.

Re: Fehlender Werte für Dummykodierung benutzen

Verfasst: Fr Nov 01, 2019 11:57 am
von farngarten
hallo Ben , es tut mir leid, aber es geht nicht. auch beim Demo Datensatz. er wird korrekt eingelesen. Bild

Re: Fehlender Werte für Dummykodierung benutzen

Verfasst: Fr Nov 01, 2019 12:49 pm
von bigben
Hallo farngarten,

ich habe jetzt eine ganz frische R Session aufgemacht und meinen Code von oben da rein kopiert. In der letzten Zeile erhalte ich da eine Fehlermeldung, weil ich in relevel ein Argument base= genannt habe, das ref= heißen muss. Bis zu dieser Zeile läuft mein Code bei mir problemlos durch. Ich bin ziemlich sicher, dass er soweit auch bei Dir problemlos durchlaufen würde, wenn Du ihn durchlaufen lassen würdest.

Dass bei Dir dieser Fehler auftritt liegt am Einlesen. Ich hatte geschrieben

Code: Alles auswählen

k <- read.csv2("http://forum.r-statistik.de/download/file.php?id=738")
str(k)
Was Du geschrieben hast kannst Du Dir aus Deinem Bildschirmfoto selbst raussuchen. Jedenfalls erzeugst Du da völlig unnötige NA und ja, diese NA lassen meinen Code von oben abstürzen. Kann man reparieren, war hier aber nützlich, weil es gezeigt har, dass Du beim Einlesen die Atheisten schon alle zu NA gemacht hast..

Was die Bildschirmfotos zum Vermeiden von code-Tags angeht, so halte ich es mit dem Autor dieses Blogeintrags: https://yihui.name/en/2017/08/source-code-as-screenshots/ (We cannot be friends if you share code as screenshots)


Ganz oben hast Du diesen Thread eröffnet mit
Ich habe beim Faktorisieren versucht, die -77 einzubeziehen.
Wenn Du da auch schon beim Einlesen die -77 alle gegen NA ersetzt hattest, dann brauchst Du Dich nicht zu wundern, wenn nachher keine -77 Werte mehr auftauchen. Über die Art des Einlesens hattest Du aber kein Wort verloren. Verstehst Du jetzt vielleicht, warum wir soviel Wert auf ausführbaren Beispielcode legen?
Ich werde jedenfalls von jetzt an keine Frage mehr von Dir beantworten, in der zwar eine Datei angehängt ist aber nicht in code-Tags dabei steht, wie Du das einliest und weiter verarbeitest.

Gruß,
Bernhard

Re: Fehlender Werte für Dummykodierung benutzen

Verfasst: Fr Nov 01, 2019 1:10 pm
von Hufeisen
farngarten,

Dein Bildschirmfoto ist nicht ausreichend anonymisiert (das wolltest Du ja wohl). Die Zeile workspace loaded from... fehlt noch.

Re: Fehlender Werte für Dummykodierung benutzen

Verfasst: Fr Nov 01, 2019 3:37 pm
von farngarten
@hufeisen, danke für die Info. habs geändert. @Ben, danke für die Mühe. Für Nicht-Informatiker ist es nicht einfach, sich einzufühlen , wieviel Code sein muss und wieviel nicht. Kurz: es geschieht nicht, um jemanden zu ärgern , sondern schlicht, weil ich nicht durchblicke, und froh bin wenn ich den Tag ohne Fehlermeldung überstehe.