Wenn Sie group_by
mehrere Variablen, findet dplyr
hilfreich die Schnittmenge dieser Gruppen.dplyr :: group_by() mit mehreren Variablen, aber nicht Schnittpunkt
Zum Beispiel
mtcars %>%
group_by(cyl, am) %>%
summarise(mean(disp))
ergibt
Source: local data frame [6 x 3]
Groups: cyl [?]
cyl am `mean(disp)`
<dbl> <dbl> <dbl>
1 4 0 135.8667
2 4 1 93.6125
3 6 0 204.5500
4 6 1 155.0000
5 8 0 357.6167
6 8 1 326.0000
Meine Frage ist, gibt es eine Möglichkeit, mehrere Variablen zur Verfügung zu stellen, abergeringfügig zusammenfassen? Ich möchte die Ausgabe wie das, was Sie bekommen, wenn Sie dies manuell tun, Variable für Variable.
df_1 <-
mtcars %>%
group_by(cyl) %>%
summarise(est = mean(disp)) %>%
transmute(group = paste0("cyl_", cyl), est)
df_2 <-
mtcars %>%
group_by(am) %>%
summarise(est = mean(disp)) %>%
transmute(group = paste0("am_", am), est)
bind_rows(df_1, df_2)
Der obige Code liefert
# A tibble: 5 × 2
group est
<chr> <dbl>
1 cyl_4 105.1364
2 cyl_6 183.3143
3 cyl_8 353.1000
4 am_0 290.3789
5 am_1 143.5308
Idealfall würde die Syntax etwas wie
mtcars %>%
group_by(cyl, am, intersection = FALSE) %>%
summarise(est = mean(disp))
sein Ist so etwas in der tidyverse
existieren?
(ps, ich bekomme, dass meine group
Variable in der Tabelle oben in dem Sinne nicht ordentlich ist, dass es zwei Variablen in einem, aber ich verspreche, für meine Zwecke ordentlich es ist, OK? :))
Dies ist eine großartige Lösung. Kleine Bearbeitung, um allgemeiner zu machen df%>% sammeln (col, Wert, X1, X2, X3, X4)%>% mutieren (Gruppe = Paste0 (col, "_", Wert)) –
Zustimmen, ich bearbeitet die Antwort – denrou