reordenar una columna numérica basándose en los niveles de otra columna
Me gustaría reordenar mi columna numérica de acuerdo a los niveles de factor de la columna group. Mis datos de prueba se ven así:
toy.df <- data.frame(group = c(rep(“C”,3), rep(“B”, 2),rep(“A”, 1)), num = c(rep(10, 3), rep(5,2), 20))
toy.df$group <- factor(toy.df$group, levels = c(‘B’, ‘A’, ‘C’))
La última línea de código no está funcionando. ¿Tiene alguna idea de cómo puedo establecer los niveles de la columna num utilizando los niveles de la columna group?
Gracias.
davy.ai
Dado que la columna
num
es una columna numérica, no podemos establecer sus niveles directamente. En su lugar, podemos crear una nueva columna con el orden deseado basado en los niveles degroup
. Aquí está el código que logra esta tarea:Este código primero crea una nueva columna
num_order
utilizando declaraciones condicionales. La funciónif_else()
prueba si el valor degroup
es igual a C, B o A y asigna los valores correspondientes de 1, 2 o 3 anum_order
. Luego, la funciónarrange()
ordena el marco de datos primero por la columnanum_order
y luego porgroup
. Finalmente, la funciónselect()
elimina la columnanum_order
del marco de datos.El marco de datos resultante debería lucir así:
La columna
num
se reordena según los niveles de la columnagroup
.