Seite 1 von 1
Reihenfolge vertauschen bei Ordinalskala
Verfasst: Mo Okt 07, 2019 2:17 pm
von farngarten
Hallo,
ich habe bei einer Ordinalskala einen Fehler gemacht. Variable Höchster Bildungsgrad. 6 = Promotion und 7 = abgeschlossenes Hochschulstudium. Es muss aber anderrum lauten. Wie kann ich das ändern?
viele Grüße Martin
Re: Reihenfolge vertauschen bei Ordinalskala
Verfasst: Mo Okt 07, 2019 2:38 pm
von Athomas
Wie kann ich das ändern?
6 = abgeschlossenes Hochschulstudium und 7 = Promotion
Re: Reihenfolge vertauschen bei Ordinalskala
Verfasst: Mo Okt 07, 2019 3:35 pm
von farngarten
Entschuldigung, ich bin Anfänger und die Antwort ist zu kryptisch.
Code: Alles auswählen
k$v_306_korr <- subset(k$v_306, 6 = Hochschulstudium, 7 = Promotion)
hab ich probiert. Geht nicht.
Grüße Martin
Re: Reihenfolge vertauschen bei Ordinalskala
Verfasst: Mo Okt 07, 2019 3:44 pm
von Athomas
Entschuldigung, ich bin Anfänger und die Antwort ist zu kryptisch.
Entschuldigung, ich bin Fortgeschrittener, und meine Antwort war ein Scherzversuch, mit dem ich auf die Unzulänglichkeit Deiner Fragestellung hinweisen wollte!
Dass man auf dieser Basis keine vernünftige Antwort geben kann, sollte doch auch einem Anfänger klar sein!?
Re: Reihenfolge vertauschen bei Ordinalskala
Verfasst: Mo Okt 07, 2019 3:48 pm
von Hufeisen
Die Antwort auf Deine Frage lautet: umkodieren. Ist deine Variable numerisch, muss aus 6 eine 7 werden und umgekehrt. Dafür brauchst du einen Zwischenschritt.
Code: Alles auswählen
set.seed(1)
forum <- data.frame(Bildung = round(runif(20, 1, 7)))
forum$Bildung_alt <- forum$Bildung # Zum Vergleich
forum$Bildung[forum$Bildung == 7] <- "Zwischenschritt"
forum$Bildung[forum$Bildung == 6] <- "7"
forum$Bildung[forum$Bildung == "Zwischenschritt"] <- "6"
forum
Re: Reihenfolge vertauschen bei Ordinalskala
Verfasst: Mo Okt 07, 2019 3:49 pm
von bigben
@farngarten Bitte den dritten Satz in meinem Post vom 8.12.2017 nochmal lesen und beherzigen: http://forum.r-statistik.de/viewtopic.php?f=22&t=682&p=2801#p2803
@Hufeisen: Das ist kein guter Plan, weil Du die Spalte "Bildung" jetzt als Character vorliegen hast, obwohl sie numerisch sein sollte. Eine Funktion wie die folgende ließe die Daten in numerischem Format und ließe sich jederzeit sehr übersichtlich anpassen, sollten die Vertauschungsregeln komplexer werden:
Code: Alles auswählen
tausche67 <- Vectorize(function(n){
if(n==6) return(7)
if(n==7) return(6)
return(n)
})
LG,
Bernhard
Re: Reihenfolge vertauschen bei Ordinalskala
Verfasst: Mo Okt 07, 2019 4:03 pm
von bigben
farngarten hat geschrieben: ↑Mo Okt 07, 2019 3:35 pm
hab ich probiert. Geht nicht.
Warum sollte das auch gehen? Warum denkst Du, dass Du bei 7 == 7-1 ein doppeltes, bei 6 = 6+1 aber ein einfaches Gleichheitszeichen brauchen könntest?
7 == 7-1 ist immer FALSE
6 = 6+1 ist eine Zuweisung, die den Regen der Arithmetik widerspricht.
R hat, genau wie eigentich alle anderen Programmiersprachen auch, ziemlich konkrete Vorstellungen zur Syntax. Bei natürlichen Sprachen mag einfach Ausprobieren helfen, Ausprobieren hiflt beim Durchschauen der Syntax von Computersprachen wenig.
Re: Reihenfolge vertauschen bei Ordinalskala
Verfasst: Mo Okt 07, 2019 4:38 pm
von farngarten
Code: Alles auswählen
tausche67 <- Vectorize(function(n){
if(n==6) return(7)
if(n==7) return(6)
return(n)
})
Wie mache ich es ,dass er nur für die eine Variable die Codierung tauscht?
Re: Reihenfolge vertauschen bei Ordinalskala
Verfasst: Mo Okt 07, 2019 5:18 pm
von bigben
Code: Alles auswählen
demo <- read.csv2("http://forum.r-statistik.de/download/file.php?id=710")
tausche67 <- Vectorize(function(n){
if(n==6) return(7)
if(n==7) return(6)
return(n)
})
demo$v_306_neu <- tausche67(demo$v_306)
head(demo, 20)
Re: Reihenfolge vertauschen bei Ordinalskala
Verfasst: Mo Okt 07, 2019 6:05 pm
von Hufeisen
bigben hat geschrieben: ↑Mo Okt 07, 2019 3:49 pm
@Hufeisen: Das ist kein guter Plan, weil Du die Spalte "Bildung" jetzt als Character vorliegen hast, obwohl sie numerisch sein sollte.
Guter Hinweis.
Code: Alles auswählen
set.seed(1)
forum <- data.frame(Bildung = round(runif(20, 1, 7)))
forum$Bildung_alt <- forum$Bildung # Zum Vergleich
forum$Bildung[forum$Bildung == 7] <- "Zwischenschritt"
forum$Bildung[forum$Bildung == 6] <- "7"
forum$Bildung[forum$Bildung == "Zwischenschritt"] <- "6"
forum$Bildung <- as.numeric(forum$Bildung)
forum