Pero ¿Qué es todo esto en la práctica?
En las siguientes tablas podemos ver dos ejemplos donde se compila la edades de los alumnos de un curso.
Curso <- tibble(
Edad_Alumnos= c(rep("10 Años", 8),
rep("11 Años", 21),
rep("12 Años", 3))
)
Curso
En la primera tabla nos encontramos con los datos de las edades en “bruto” compilados en una lista. Con datos en esta manera, el trabajo de datos es lento, porque hay que ir agrupando los datos uno por uno si es que se quiere hayar algo
Curso_Data <- tribble(
~Edad_Alumnos, ~Cantidad,
"10 años", 8,
"11 años", 21,
"12 años", 3
)
Curso_Data
En cambio, en la segunda tabla, los datos se agruparon automaticamente.
Siguiendo con el ejemplo de las tablas 1 y 2 podemos comprender lo que Wickham plantea respecto al Tidy Data.
De acuerdo al autor,“un conjunto de datos es Tidy o desordenado dependiendo de cómo las filas, columnas y tablas se combinan con las observaciones,variables y tipos”.
Es decir, mis datos serán más o menos compresibles de acuerdo a la estructura lógica que yo eliga para presentarlos
En ese sentido, el autor plantea que para que un set de datos sea Tidy es indispensable que:
- Cada variable forme una columna
- Cada osbervacion forme un fila
- Cada tipo de unidad de observación forme una tabla
Podemos ver aplicadas estas reglas en la suiguente tabla
Peliculas_Taquilleras_Chile_2018 <- tribble (
~Pelicula, ~Productora, ~MillDolRec, ~MesEstreno,
"Avengers_Infinity_War", "Disney", 14.7, "Abril",
"Incredibles_2", "Disney", 8.9, "Junio",
"Jurassic_World_Fallen_Kingdom", "UPI", 7.7, "Junio",
"Hotel_Transylvania_3_Summer_Vacation", "Sony", 6.5, "Julio",
"Deadpool_2", "Fox", 6.2, "Mayo",
"Black_Panther", "Disney", 4.9, "Febrero",
"Ferdinand", "Fox", 3.4, "Enero",
"Venom", "Sony", 2.8, "Octubre",
"Ant-Man_and_the_Wasp", "Disney", 2.4, "Julio",
"Fifty_Shades_Freed", "AF", 2.3, "Febrero"
)
Peliculas_Taquilleras_Chile_2018
La importancia de trabajar con Datos Tidy en programas como R radica en que no solo el orden de nuestros datos nos permite comprender mejor lo que estamos haciendo, sino en que ahorramos tiempo y podemos sacar un mejor provecho de las herramientas de esta forma.
Por ejemplo, ante la tarea de ordener las películas más exitosas en Chile en los últimos tres años, al ordenar los datos mediante la misma lógica Tidy, vista anteriormente, R nos permite visualizar en primera instancia el predominio del estudio Disney en el mercado nacional.
Peliculas_Taquilleras_Chile_2016_A_2018 <- tribble (
~Pelicula, ~Productora, ~MillDolRec, ~MesEstreno, ~Año,
"Avengers_Infinity_War", "Disney", 14.7, "Abril", 2018,
"Incredibles_2", "Disney", 8.9, "Junio", 2018,
"Jurassic_World_Fallen_Kingdom", "UPI", 7.7, "Junio", 2018,
"Hotel_Transylvania_3_Summer_Vacation", "Sony", 6.5, "Julio", 2018,
"Deadpool_2", "Fox", 6.2, "Mayo", 2018,
"Black_Panther", "Disney", 4.9, "Febrero", 2018,
"Ferdinand", "Fox", 3.4, "Enero", 2018,
"Venom", "Sony", 2.8, "Octubre", 2018,
"Ant-Man_and_the_Wasp", "Disney", 2.4, "Julio", 2018,
"Fifty_Shades_Freed", "AF", 2.3, "Febrero", 2018,
"Coco", "Disney", 10.0, "Noviembre", 2017,
"Despicable_Me_3", "UPI", 7.3, "Junio", 2017,
"The_Fate_of_the_Furious", "UPI", 6.9, "Abril", 2017,
"Moana", "Disney", 5.3, "Enero", 2017,
"Star_Wars_The_Last_Jedi", "Disney", 4.9, "Diciembre", 2017,
"Beauty_and_the_Beast", "Disney", 4.8, "Marzo", 2017,
"The_Boss_Baby", "Fox", 4.6, "Marzo", 2017,
"Jumanji_Welcome_to_the_Jungle", "Sony", 4.6, "Diciembre", 2017,
"Spider-Man_Homecoming", "Sony", 4.3, "Julio", 2017,
"Pirates_of_the_Caribbean_D.M.T.N.T", "Disney", 4.1, "Mayo", 2017,
"Ice_Age_Collision_Course", "Fox", 7.5, "Julio", 2016,
"Finding_Dory", "Disney", 7.0, "Junio", 2016,
"Captain_America:Civil_War", "Disney", 6.7, "Abril", 2016,
"The_Secret_life_of_Pets", "UPI", 6.0, "Julio", 2016,
"Batman_VS_Superman:Dawn_of_Justice", "WB", 5.1, "Marzo", 2016,
"The_Jungle_Book", "Disney", 4.7, "Abril", 2016,
"Sin_Filtro", "n/a", 4.4, "Enero", 2016,
"Zootopia", "Disney", 4.2, "Febrero", 2016,
"Deadpool", "Fox", 4.2, "Febrero", 2016,
"Sing", "UPI", 3.5, "Diciembre", 2016
)
Peliculas_Taquilleras_Chile_2016_A_2018
Al manejar grandes sets de datos en programas como R el uso del Tidy Data se vuelve fundamental para conseguir nuestro objetivo de presentar la mejor información de la manera más sencilla posible y obtener nuevos datos gracias al uso de las distintas funciones de R. Una de las herramientas que podemos usar para ello son los verbos de manipulación que vienen incluidos en el paquete de detos de dplyr
Por ejemplo, retomando la tabla anterior de las películas más taquilleras de Chile entre 2016 y 2018, podemos usar la función filter para tomar ciertos datos que son de nuestro interés.
PeliculasDisney2016_A_2018 <- filter(Peliculas_Taquilleras_Chile_2016_A_2018, Productora == "Disney")
PeliculasDisney2016_A_2018
En este caso, como con filter podemos ver datos especificos que cumplan ciertas condiciones, acá tomamos los datos del estudio Disney en el año 2017.
Esto, entre otras, cosas nos pemtirá ver cómo le fue las producciones del estudio dentro de las películas más poulares en Chile en el año 2017.
filter(Peliculas_Taquilleras_Chile_2016_A_2018, Productora == "Disney", Año == 2017)
Otra función que podemos utilizar para sacar el máximo provecho a los datos ordenados según los criterios de Tidy es names, que nos permite conocer las variantes que existen en nuestra tabla.
names(Peliculas_Taquilleras_Chile_2016_A_2018)
En una línea similar podemos seguir explorando nuestra Tidy Data con la función select, la cual nos permite ver variantes específicas.
Por ejemplo, en este caso, una variable específica sería el monto recaudado por cada película, ya que es un valor presente con distintas cifras en cada producción.
select(Peliculas_Taquilleras_Chile_2016_A_2018, Pelicula, MillDolRec)
Dentro de esta misma función podemos organizar más aún nuestra información si ponemos “-” luego una variante, lo que permitirá que en nuestra tabla aprezcan todas las varientes menos esa.
Para efectos de este ejemplo decidimos prescindir del año de estreno de las películas.
select(Peliculas_Taquilleras_Chile_2016_A_2018, -Año)
Siguiendo con select y sus múltiples opciones que nos permiten organizar nuestros datos, también podemos ordenar las variables de nuestra tidy data si escribimos todas las variables y luego las cambiamos de lugar.
Algo que en la siguiente tabla exploramos moviendo el año de estreno desde el costado derecho al izquierdo.
select(Peliculas_Taquilleras_Chile_2016_A_2018, Año, Pelicula, Productora, MillDolRec, MesEstreno)
Otra función muy útil para sacarle provecho a nuestros Datos Tidy es mutate, la que nos permite crear nuevas categorías a partir de las ya existentes.
Sin embargo, por la naturaleza de los datos que hemos explorado hasta ahora respecto a las películas más vistas en Chile, este verbo de manipulación no es compatible con nuestra tabla debido a que las varientes existentes no pueden interactuar entre si para crear otras nuevas.
Esto claramente nos demuestra la importancia de la Tidy Data ya que, si no tuvieramos nuestros datos ordenados, perderíamos nuestro tiempo creando una tabla que no tiene sentido y será difícil de entender.
Pero si bien no todas las funciones sirven para todos los casos, alternativas como summarise son ideales para comenzar a procesar nuestra información ya que esta característica nos permite ver por ejemplo, el promedio de variantes y sus valores maximos y minimos, entre otros datos.
Por ejemplo, nosotros escogimos ver la recaudación promedio y la recaudación máxima de las películas más vistas en Chile entre 2016 y 2018.
summarise(Peliculas_Taquilleras_Chile_2016_A_2018, RecaudaciónPromedio = mean(MillDolRec))
summarise(Peliculas_Taquilleras_Chile_2016_A_2018, RecaudaciónMaxima = max(MillDolRec))
Aunque también podemos usar la función para ver datos como el monto más bajo de recaudacion de nuestras muestras o la suma de todas las ganancias de los films que hay en nuestra tabla.
summarise(Peliculas_Taquilleras_Chile_2016_A_2018, RecaudaciónMinima = min(MillDolRec))
summarise(Peliculas_Taquilleras_Chile_2016_A_2018, RecaudaciónTotal = sum(MillDolRec))
Otro verbo de manipulación que se puede aplicar a los datos como lo hace summarise es group_by, que básicamente permite que los otros verbos de manipulación señalados anteriormente no solo trabajen sobre variables, sino que se ejecuten a través de datos concretos.
Así, por ejemplo, si anteriormente usamos summarise para sacar el promedio de las ganancias cosechadas por las película, lo que nos arrojó fue el promedio de todos los datos de esa variante. En cambio ahora, gracias a group_by, el promedio de ganancias fue separado por año.
Por_Años <- group_by(Peliculas_Taquilleras_Chile_2016_A_2018, Año)
Por_Años
summarise(Por_Años, RecaudaciónPromedio = mean(MillDolRec))
Una última función que nos permite sacar el máximo provecho a nuestra Tidy Data es arrange, un verbo de manipulación que ordena las tablas según las variantes que uno quiera.
En este caso decidimos separar primero por películas y posteriormente por productora y película. Lo que muestra la versatilidad de esta función.
arrange(Peliculas_Taquilleras_Chile_2016_A_2018, Pelicula)
arrange(Peliculas_Taquilleras_Chile_2016_A_2018, Productora, Pelicula)