Seite 2 von 3
Re: Summe aus Gruppierung in einer neuen Spalte
Verfasst: Mo Aug 10, 2020 1:51 pm
von bigben
Hallo Werekorden
ich packe meine Frage mal hier mit hin da ich, naja eine ähnliche Frage habe.
Mach in Zukunft lieber neue Threads auf, dann bleibt das Forum übersichtlicher.
Werekorden hat geschrieben: Mo Aug 10, 2020 12:54 pmeine Tabelle erstellen bei der in einer neue Spalte der Mittelwert für die einzelnen Messwerte
y bei gleicher Konzentration
x erstellt werden. Jetzt braucht man aber z.B. bei der ersten Konzentration
100 den MW nicht in jeder Zeile sondern nur in der dritten Zeile usw.
Das ist für mich nicht ausreichend verständlich. Was soll denn in der ersten und zweiten Zeile mit der Konzentration stehen und wo willst Du einen Mittelwert bei den Konzentrationen haben, für die es keine dritte Zeile gibt?
Es ist sehr löblich, dass Du ein lauffähiges Minimalbeispiel postest (wenn auch mit einer Klammer zuviel), aber hier ist mir die Zielbeschreibung zu unklar. Vorläufig biete ich mal an, dass der Mittelwert in allen Zeilen steht:
Und einmal eine Lösung, wenn Du jeden Mittelwert nur einmal haben willst:
LG,
Bernhard
Re: Summe aus Gruppierung in einer neuen Spalte
Verfasst: Mo Aug 10, 2020 2:15 pm
von Werekorden
bigben hat geschrieben: Mo Aug 10, 2020 1:51 pm
Mach in Zukunft lieber neue Threads auf, dann bleibt das Forum übersichtlicher.
OK
Also zur Tabelle. Die sieht dan in etwa so aus:
Code: Alles auswählen
x y MW
100 25.5
100 24.9
100 25.3 25.2
200 27.9
200 27.0 27.4
.
.
Es soll wie oben jeweils die letzte Zeile der entsprechenden Konzentration einen MW anzeigen.
VG
Andreas
Re: Summe aus Gruppierung in einer neuen Spalte
Verfasst: Mo Aug 10, 2020 2:35 pm
von bigben
Hi!
Das kannst Du in Excel machen, wo es leere Zellen gibt. In R ist das eine Spalte aus numerischen Werten und dann muss da auch in jeder Zeile ein numerischer Wert drin stehen. Bestenfalls kannst Du die anderen Zellen mit NA befüllen (und selbst das wären dann numerische NA).
Ich habe Schwierigkeiten mir vorzustellen, wozu das gut sein soll. Mein Bauchgefühl sagt, wir haben es mit einem XY-Problem zu tun:
https://de.wikipedia.org/wiki/XY_Problem
Wenn Du ein wenig mehr Kontext schilderst, findet sich vielleicht ein grundlegend besserer Ansatz für das Problem.
LG,
Bernhard
Re: Summe aus Gruppierung in einer neuen Spalte
Verfasst: Mo Aug 10, 2020 2:37 pm
von EDi
Schreib den Mittelwert überall rein und lösche (=setze auf NA) ihn in der 1&2 Zeile danach.
Oder du machst einen Join über die Zeilennummer - dazu brauchst du aber teilen Nummern im beiden Tabellen (nicht-Treffer werden dann mit NAs aufgefüllt).
Re: Summe aus Gruppierung in einer neuen Spalte
Verfasst: Mo Aug 10, 2020 2:42 pm
von bigben
PS so könnte man es mit NA machen:
Code: Alles auswählen
x <- c(100, 100, 100, 200, 200, 500, 500, 1000, 1000)
y <- c(25.5, 24.9, 25.3, 27.9, 27.0, 29.5, 29.7, 30.4, 31.1)
data <- data.frame(x, y)
data$y.mw.per.x <- ave(data$y, data$x, FUN = mean)
data$withNA <- NA
last.rows <- cumsum(rle(data$x)$length)
data$withNA[last.rows] <- data$y.mw.per.x[last.rows]
LG,
Bernhard
Re: Summe aus Gruppierung in einer neuen Spalte
Verfasst: Mo Aug 10, 2020 2:51 pm
von Werekorden
HI,
Naja es geht eher darum, dass es eine ''Tabelle'' ergeben soll: Also mit kable in rmarkdown für pdf Präsentationen usw. in der dann z.B. der MW angezeigt wird, wie ich es oben gezeigt habe.
Ich dachte man müsste das erst in einem tibble anlegen.
Ich habe es fast schon geahnt, dass R, das nicht zulässt.
Irgendwie sollte man das dann mit kable und rmarkdown hinbekommen um eine ansehnliche Tabelle für z.b. Präsentation, Paper usw. hinzubekommen
Soll ich da einen neuen Thread aufmachen?
Danke bis hierhin für die Hilfe bzw. Klarstellung und sorry für die Unklarheiten meiner Seits.
VG
Andreas
Re: Summe aus Gruppierung in einer neuen Spalte
Verfasst: Mo Aug 10, 2020 3:06 pm
von bigben
Natürlich bekommt man das mit R hin
Wenn es nur um die Ausgabe in einer Tabelle geht, müssen das ja keine Zahlen mehr sein, sondern können Strings sein. Dann sowas in der Art:
Code: Alles auswählen
x <- c(100, 100, 100, 200, 200, 500, 500, 1000, 1000)
y <- c(25.5, 24.9, 25.3, 27.9, 27.0, 29.5, 29.7, 30.4, 31.1)
data <- data.frame(x, y)
data$y.mw.per.x <- ave(data$y, data$x, FUN = mean)
data$withNA <- ""
last.rows <- cumsum(rle(data$x)$length)
data$withNA[last.rows] <- as.character(round(data$y.mw.per.x[last.rows],3))
data$y.mw.per.x <- NULL
print(data)
Rechnne lässt sich damit dann halt nicht mehr. Natürlich darfst Du da gerne noch ein
tibble draus machen, wenn irgendwas davon
dplyr sein muss
LG,
Bernhard
Re: Summe aus Gruppierung in einer neuen Spalte
Verfasst: Mo Aug 10, 2020 5:02 pm
von Werekorden
Ich habe gerade überlegt, man könnte zumindest wenn überall eine gleiche Anzahl an Werten ist auch die Tabelle so erstellen:
Code: Alles auswählen
x y1 y2 MW
100 25.5 24.9 25.2
200 27.9 27.0 27.4
500 29.5 30.1 29.8
dann könnte man den Mittelwert der beiden Variablen y1 und y2 berechnen gruppiert für die jeweiligen Konzentrationen.
Mhhh?
Re: Summe aus Gruppierung in einer neuen Spalte
Verfasst: Mo Aug 10, 2020 5:14 pm
von Werekorden
It worked so far,
Ich muss leider die Rohdaten direkt mit der deskriptiven Statistik zeigen, das ist ein Vorgabe. So kann ich es um sd usw. erweitern.
Code: Alles auswählen
x <- c(100, 200, 500, 1000)
y1 <- c(25.5, 27.9, 29.5, 30.4)
y2 <- c(24.9, 27.0, 29.7, 31.1)
y3 <- c(25.1, NA, NA, NA)
data <- data.frame(x, y1, y2, y3)
library(dplyr)
dataMW <- data %>%
group_by(x) %>%
summarise(w = mean (c(y1, y2, y3), na.rm = TRUE))
dataMW
mutate (data, dataMW)
VG
Andreas
Re: Summe aus Gruppierung in einer neuen Spalte
Verfasst: Di Aug 11, 2020 8:04 am
von bigben
Hallo Andreas,
mein letztex Code-Stück zeigt die Tabelle so, wie Du sie haben wolltest. Warum jetzt dann doch auf einmal ein weites Format mit NA-Einträgen?
LG,
Bernhard