Seite 1 von 1

Werte in einem DatenFrame ändern

Verfasst: Sa Nov 10, 2018 9:28 am
von dennbas
Hallo,

ich habe ein Datenframe in dem die Werte nicht optimal vorliegen um ein barplot zu zeichnen.

Da die ganze Tabelle fast nu aus 0 und 1 besteht.

Nun möchte ich die 1 und 0 durch Strings ersetzen.

Mein Ansatz war nun der Folgende:

Code: Alles auswählen

Anzahl <- as.numeric( length(data$Mario) )


for(i in 1:Anzahl)
{
  if(data$Mario[i] == 0){
    data$Mario[i] <- "MarioLeer"}
  
  if(data$Mario[i] == 1){
    data$Mario[i] <- "MarioVOll"} 
}
So klappt es nicht, daher bitte um Hilfe :)


Vielen Dank im Voraus.

Re: Werte in einem DatenFrame ändern

Verfasst: Sa Nov 10, 2018 10:02 am
von dennbas
das löuft so doch, hatte da ne alte Tabelle offen..

geht das noch eleganter ?

Re: Werte in einem DatenFrame ändern

Verfasst: Sa Nov 10, 2018 10:47 am
von Anti
Hmm, wie wäre es mit

Code: Alles auswählen

MarioVector = ifselse(data$Mario == 0, "MarioLeer", "MarioVOll")
?

Re: Werte in einem DatenFrame ändern

Verfasst: Sa Nov 10, 2018 12:12 pm
von jogo
Hallo dennbas,

willkommen im Forum!
Ich bin der Meinung, factor() ist die saubere Lösung. Hier ein reproduzierbares Beispiel:

Code: Alles auswählen

set.seed(42)
data <- data.frame(Mario=sample(0:1, 10, rep=TRUE))

data$MarioFaktor <- factor(data$Mario, levels=c(0,1), labels=c("MarioLeer", "MarioVOll"))
data
Gruß, Jörg

Re: Werte in einem DatenFrame ändern

Verfasst: Sa Nov 10, 2018 2:33 pm
von dennbas
Hi , vielen Dank beide Möglichkeiten laufen. Welche der beiden besser ist kann ich leider nicht beurteilen.

Auf jeden Fall sind beide deutlich besser als mein Konstrukt :)


@jogo für was haste set.seed=(42) gebraucht ? Ist laut help sowas wie randInt()

Re: Werte in einem DatenFrame ändern

Verfasst: Sa Nov 10, 2018 4:57 pm
von jogo
Hallo dennbas,
dennbas hat geschrieben: Sa Nov 10, 2018 2:33 pm @jogo für was haste set.seed=(42) gebraucht ? Ist laut help sowas wie randInt()
da habe ich mich aber kräftig verschrieben, richtig muss es heißen:

Code: Alles auswählen

set.seed(42)
Immer wenn ich Daten per Zufallszahlen generiere, packe ich das mit rein. So kannst Du, wenn Du den Code laufen lässt, genau die gleichen Daten generieren. Schließlich besteht ja bei 10 zufälligen Werten aus 0 und 1 die Wahscheinlichkeit von 2*1/1024, dass alle Werte entweder 0 oder alle 1 sind - das wäre doch wirklich kein schönes Beispiel, richtig?
Naja, und die 42 ... Du weißt schon ... das ist immer eine geeignete Antwort.

Gruß, Jörg