Seite 1 von 1

Reihenfolge ändern

Verfasst: Di Okt 27, 2020 5:38 pm
von sonsch
Hallo!
Ich bräuchte mal kurz Hilfe! Bin ein R-Anfänger, möchte aber gerne für meine Diplomarbeit dieses Programm nutzen. :?:

Kurz zusammengefasst geht es um die log. Reduktion von Zellzahlen durch ein bestimmtes Antiseptikums zu gewissen Einwirkzeiten.

Ich habe ein Data-Frame, das ich nach einer bestimmten Spalte ("Zeitpunkte") sortiert habe mit dem Befehl

Code: Alles auswählen

arrange()
Es ist zwar jetzt in einer absteigenden Reihenfolge (120 sec, 30 sec, 5 min, 60 sec), aber es entspricht nicht meiner gewünschten Reihenfolge (30 sec, 60 sec, 120 sec, 5 min). Gibt es hier einen Zusatz, der es mir erlaubt selbst eine Reihenfolge zu bilden?

Ich hoffe mir kann jemand helfen! :)

LG

Re: Reihenfolge ändern

Verfasst: Di Okt 27, 2020 7:04 pm
von bigben
Du musst den Variablentyp mit ordered() in einen geordneten Faktor aka eine ordinale Variable umwandeln oder die 5 Minuten in 600 Sekunden umwandeln und eine numerische Variable daraus machen.
Poste mal das Ergebnis von

Code: Alles auswählen

str(deindataframe$Zeitpunkte)
table(deindataframe$Zeitpunkte)
LG, Bernhard

Re: Reihenfolge ändern

Verfasst: Di Okt 27, 2020 7:27 pm
von sonsch
Hallo Bernhard!
Erst mal vielen Dank für Deine schnelle Antwort!

Das kommt dabei raus:

Code: Alles auswählen

str(h2o2_MWtabelle$Einwirkzeit)
 Factor w/ 5 levels "","120 sec","30 sec",..: 2 3 4 5
> table(h2o2_MWtabelle$Einwirkzeit)

        120 sec  30 sec   5 min  60 sec 
      0       1       1       1       1 
      
(hab in der Tabelle die Spalte Zeitpunkte in Einwirkzeit umbenannt )

Re: Reihenfolge ändern

Verfasst: Di Okt 27, 2020 10:05 pm
von bigben

Code: Alles auswählen

# Du hast sowas hier:
h2o2_MWtabelle <-  data.frame( letter = LETTERS[1:4],
                               number = 1:4,
                               Einwirkzeit = c("120 sec", "30 sec",
                                               "5 min", "60 sec"),
                               stringsAsFactors = TRUE)
str(h2o2_MWtabelle)
head(h2o2_MWtabelle)

# und jetzt die Umwandlung
h2o2_MWtabelle$Einwirkzeit2 <- ordered(h2o2_MWtabelle$Einwirkzeit,
                                      levels = c("30 sec", "60 sec",
                                                 "120 sec", "5 min"))
str(h2o2_MWtabelle)
head(h2o2_MWtabelle)

# und jetzt sortiert nach Einwirkzeit2 anzeigen lassen:
head(h2o2_MWtabelle[order(h2o2_MWtabelle$Einwirkzeit2),])

# richtige Reihenfolge braucht man auch für Grafiken mit ggplot2
library(ggplot2)
ggplot(h2o2_MWtabelle) +
  geom_col(aes(x=Einwirkzeit2, y=number)) # Reihenfolge auf der x-Achse beachten!
HTH,
Bernhard

Re: Reihenfolge ändern

Verfasst: Di Okt 27, 2020 10:34 pm
von EDi
Oder alles in Sekunden umwandeln und als numerisch betrachten...

Re: Reihenfolge ändern

Verfasst: Mi Okt 28, 2020 3:49 pm
von sonsch
Vielen, vielen Dank, Bernhard!
Hat gut geklappt :D

Alles in Sekunden umwandeln wäre für mich die "ultima ratio" gewesen, da ich es so viel anschaulicher finde ;)

LG