So habe ich zwei Systeme, die zwei Benchmarks ausführen, von denen ich zwei Metriken sammeln.Zusammenfassung hinzufügen mittlere Zeile in R Datenrahmen mit dplyr
df1 <- data.frame(Benchmark = c("Benchmark1", "Benchmark2"),
Metric1 = c(120, 200),
Metric2 = c(200, 150))
df2 <- data.frame(Benchmark = c("Benchmark1", "Benchmark2"),
Metric1 = c(100, 150),
Metric2 = c(200, 180))
Jetzt bereite ich diesen Datenrahmen für mit ggplot Plotten
df <- left_join(df1, df2, by = "Benchmark") %>%
gather(Metric,Value,2:5) %>%
mutate(System = ifelse(grepl(".x", Metric), "System1", "System2"),
Metric = ifelse(grepl("1" , Metric), "Metric1", "Metric2"))
Und ich kann ein schönes Diagramm wie diese
ggplot(df %>% filter(Metric == "Metric1"), aes(x = Benchmark, y = Value, fill = System)) +
geom_col(position = "dodge")
Jetzt bekomme ich mag eine hinzufügen neue Reihe von Balken mit der Geometrie dieser Metriken für jedes dieser Systeme.
Mein Datenframe muss 2 x 2 = 4 neue Zeilen für jede (System, Metrik) -Kombination enthalten, die die Geometrie der Werte der Benchmarks für jede Kombination (System, Metrik) enthält.
Ich weiß, dass ich Base R verwenden kann, um Datenrahmenspalten auszuwählen, die einem Kriterium entsprechen, den Mittelwert zu erhalten und dann manuell neue Zeilen mit bind_rows einzugeben. Gibt es einen automatisierten Weg dies mit dplyr zu erreichen? Vielleicht mit einer Kombination von group_by() mit anderen Funktionen?
Vielen Dank im Voraus.
Ja! Genau das habe ich gesucht. Ich habe nicht daran gedacht, Spread + Collect noch einmal zu kombinieren, um dies zu erreichen. (also gibt es keinen Befehl, der diese Funktionalität zu einer einzigen vereint?) – mbrandalero