Werte in einem DatenFrame ändern

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

Moderatoren: EDi, jogo

Antworten
dennbas

Werte in einem DatenFrame ändern

Beitrag 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.
dennbas

Re: Werte in einem DatenFrame ändern

Beitrag von dennbas »

das löuft so doch, hatte da ne alte Tabelle offen..

geht das noch eleganter ?
Anti

Re: Werte in einem DatenFrame ändern

Beitrag von Anti »

Hmm, wie wäre es mit

Code: Alles auswählen

MarioVector = ifselse(data$Mario == 0, "MarioLeer", "MarioVOll")
?
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Werte in einem DatenFrame ändern

Beitrag 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
dennbas

Re: Werte in einem DatenFrame ändern

Beitrag 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()
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Werte in einem DatenFrame ändern

Beitrag 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
Antworten