usar sheet mutate meaning functions como cheat r dplyr

sheet - tidyr r



R, dplyr-combinaciĆ³n de group_by() y organizar() no produce el resultado esperado? (3)

Creo que quieres

ToothGrowth %>% arrange(supp,len)

El sistema de encadenamiento simplemente reemplaza los comandos anidados, por lo que primero está agrupando, luego ordenando el resultado agrupado, lo que rompe el orden original.

al usar la función group_by() e inmediatamente después de arrange() , esperaría obtener una salida donde el marco de datos se ordene dentro de los grupos que group_by() en group_by() . Mi lectura de la documentación es que esta combinación debería producir tal resultado, sin embargo, cuando lo probé, esto no es lo que obtengo, y buscar en Google no indica que otras personas se hayan encontrado con el mismo problema. ¿Me equivoco al esperar este resultado?

Aquí hay un ejemplo, usando el conjunto de datos incorporado R ToothGrowth:

library(dplyr) ToothGrowth %>% group_by(supp) %>% arrange(len)

Ejecutar esto producirá un marco de datos donde todo el marco de datos se ordenará de acuerdo con len y no dentro de los factores de supp .

Este es el código que produce la salida deseada:

ToothGrowth %>% group_by(supp) %>% do( data.frame(with(data=., .[order(len),] )) )


Otra forma de solucionar este problema de orden inesperado mientras aún usa la group_by() es convertir el grouped_df nuevo a un data frame . group_by es necesario para los resúmenes, por ejemplo:

ToothGrowthMeanLen <- ToothGrowth %>% group_by(supp, dose) %>% summarise(meanlen = mean(len))

Esta tabla resumen no está ordenada en el orden de meanlen

ToothGrowthMeanLen %>% arrange(meanlen)

Esta tabla de resumen está dispuesta en el orden de meanlen

ToothGrowthMeanLen %>% data.frame() %>% # Convert to a simple data frame arrange(meanlen)

La conversión de grouped_df a un marco de datos es la primera forma que encontré para ordenar un data.frame resumido. Pero, de hecho, dplyr::ungroup existe para ese propósito.

ToothGrowthMeanLen %>% ungroup() %>% # Remove grouping arrange(meanlen)


Puede generar el comportamiento esperado configurando .by_group = TRUE en la arrange :

library(dplyr) ToothGrowth %>% group_by(supp) %>% arrange(len, .by_group = TRUE)