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 :roll:

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)

Code: Alles auswählen

k$v_306_korr <- k$v_306, 7 == 7-1, 6 = 6+1,
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

Code: Alles auswählen

k$v_306_korr <- k$v_306, 7 == 7-1, 6 = 6+1,
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