Cómo expandir un dataframe basado en dos columnas?
No estoy seguro de cómo resolver esto. Tengo un dataframe que se ve así:
df <- structure(list(category = c(1, 2, 3, 4, 5), f1 = c(2, 3, 2, 3, 1),
f2 = c(1, 2, 4, 1, 2)), row.names = c(NA, -5L),
class = c("tbl_df", "tbl", "data.frame"))
Los números en las variables (excepto la variable llamada “category”) representan sujetos que pertenecen a una de esas categorías y f1 y f2 son una variable dividida en estas dos variables. Me gustaría “apilar” (melt) estas variables y esos 2 en la variable f1, por ejemplo, se convertirían en 2 filas dentro de una variable llamada “f” y tendrán el número 1, manteniendo la categoría junto a ellos, que en este caso es 1. F2, categoría 1, tiene 1 observación y se convertiría en 1 fila dentro otra vez de la variable “f” y la categoría 1, pero esta vez tendrá el número 2.
Entonces, f1 siempre producirá filas que tendrán 1 en la columna “f” y f2 producirá filas que siempre tendrán “2” en la columna “f”.
A continuación se muestra un ejemplo visual de lo que estoy tratando de lograr:
category f
1 1 1
2 1 1
3 1 2
4 2 1
5 2 1
6 2 1
7 2 2
8 2 2
9 3 1
10 3 1
11 3 2
12 3 2
13 3 2
14 3 2
Gracias de antemano.
davy.ai
Para lograr el resultado deseado, puedes utilizar la función
tidyr::gather()
para convertir las variables “f1” y “f2” en un formato largo, y luego crear una nueva columna “f” basada en los nombres de las variables. Finalmente, puedes utilizardplyr::arrange()
para ordenar el data frame resultante por “category” y “f”. Aquí está el código:Esto te dará la siguiente salida:
Como puedes ver, el data frame derretido tiene el formato deseado con una columna “category” y una columna “f” para los valores de “f1” y “f2”, respectivamente.