sort - dplyr ¿Cómo ordenar grupos dentro de grupos ordenados?
reorganizar columnas en r (1)
Hay un poco más de complicaciones en la funcionalidad de Dplyr que no he podido resolver. Principalmente, quiero ordenar un segundo grupo dentro de un grupo ya ordenado.
Así que tengo este data.frame:
a_table <- data.frame(id=1:30,
grp1 = sample(LETTERS[1:5], 30, replace=TRUE, prob=c(1,1,2,2,3)),
grp2 = sample(letters[6:8], 30, replace=TRUE, prob=c(2,2,3)))
El primer grupo de grp1
cuenta las entradas y las grp1
, luego, para cada grp1
, cuento los valores de cada grp2
y los grp2
.
Mi intento de hacer esto:
a_summary <- a_table %>%
group_by(grp1) %>%
mutate(frst_count = n()) %>%
arrange(desc(frst_count)) %>%
group_by(grp2) %>%
mutate(scnd_count = n()) %>%
arrange(desc(scnd_count))
Pero obviamente falta algo porque no hay un grupo que summarise
y, por lo tanto, no hay clasificación grupal. Otros intentos con summarise
no han distinguido al grupo 1 y 2.
Gracias.
De forma predeterminada, group_by
tiene add = FALSE
, lo que significa que en lugar de agregar el segundo nivel de agrupación, está sobrescribiendo el primero, lo que lleva a su error.
Podrías usar:
library(dplyr)
a_table %>% group_by(grp1) %>%
mutate(frst_count = n()) %>%
group_by(grp2, add = TRUE) %>%
mutate(scnd_count = n()) %>%
arrange(frst_count, scnd_count)