Christopher Jerez, Fernanda Marchessi y Antonia Pumarino

library(tidyverse)
library(ggplot2)

Trabajar con datos puede ser muy rápido o muy lento, dependiendo de cómo estén organizados los datos. En un mundo perfecto creeríamos que todos los datos que entregan organizaciones o instituciones están bien organizados, por ende, trabajar con ellos sería fácil y rápido. Sin embargo, Hadley Wickham señala que la realidad es muy distinta.

En sus años de experiencia trabajando con datos, Wickham se ha percatado que es una realidad que los datos vienen organizados de manera extraña y que incluso, hay muchas formas en que los datos estén mal organizados. Arreglar esto manualmente, implicaba mucho tiempo pero además conllevaba muchos errores de tipeo. Por esta razón se propuso crear un sistema que ordenara los datos de manera rápida, o como dice el autor, una manera más limpia de tener los datos.

Su misión lo llevó a inventar un paquete en el programa Rstudio, donde creó un sistema mucho más simple y rápido de trabajar con datos, el tidy data.

Los tidy data, o datos prolijos, son una forma de ordenar y limpiar la información de una manera que permite ser leída y entendida de manera mucho más fácil y exacta. Para que esto sea posible se tienen que cumplir dos condiciones simultáneamente: que cada columna sea una variable y cada fila una observación.

Las variables son las que contienen los valores que miden un mismo atributo, como el tiempo, la altura, temperatura, etc. Una observación en cambio, contiene todos los valores medidos en la misma unidad como una persona, un día o tipos de fruta a través de los atributos.

A continuación, podemos observar un ejemplo de datos que no son prolijos: vemos que todos los encabezados de las columnas en verdad corresponden a valores. Si bien es evidente que esta tabla nos da información sobre tres niños, trabajar en Rstudio con estos datos tal como se presentan es muy engorroso, puesto que las variables están en las columnas.

probando_jiji <- tibble(
  
  Martin = c("1,40 metros"),
  Agustin = c("1,65 metros"),
  Joaquin = c("1,70 metros")
)

No tidy

tibble(
  Martin = c("1,40 metros"),
  Agustin = c("1,65 metros"),
  Joaquin = c("1,70 metros")
)

Al intentar graficar con ggplot, no hay nada que agrupe a Martín, Agustín o Joaquín, pues todos ellos son variables desparramadas en distintas columnas, por lo tanto es necesario dejar todos estos nombres en una misma columna. Lo mismo pasa con las estaturas, por ende, es necesario buscar otra manera de organizar los datos para procesarlos de manera ordenada y posteriormente poder graficarlos.

ggplot(probando_jiji) +
  geom_bar(mapping = aes(x = metros))
Error in FUN(X[[i]], ...) : object 'metros' not found

¿Cómo arreglar esto? Convirtiendo esta información a tidy data. Rstudio ofrece funciones que nos ayudan fácilmente a realizar esta tarea, específicamente la función gather. Gracias a ella, podemos agrupar la información en torno a dos columnas: Niños y Estatura.

probando_jiji <-tidyr::gather(data = probando_jiji,
              key = Niños,
              value = Estatura)
              
probando_jiji

Ya que nuestra información se volvió tidy, es decir, que las variables ahora están en es muy fácil graficar los datos que entrega. A continuación, mostramos un ejemplo usando el paquete Ggplot para hacer un gráfico de puntos donde cada niño está relacionado con su estatura.

ggplot(probando_jiji) +
  geom_count(aes(Niños, Estatura, colour = Niños)) +
  ggtitle("Grafico 1: Información tidy de los niños")

La situación anterior, como explica Wickham, es uno de los problemas más comunes observados en conjuntos de datos desordenados. Otros ejemplos suceden cuando:

Ante estas situaciones, hay otras herramientas que están a disposición de los usuarios para convertir un conjunto de datos desordenado a uno ordenado. Por ejemplo, a continuación presentamos un conjunto de datos donde hay muchas variables en una columna.

ejemplo_1 <- tibble(
  años_precios = c("2017_7000", "2018_8000", "2019_9000", "2017_6000", "2018_7000", "2019_8000"),
  Producto = c("almendra", "almendra", "almendra","nuez", "nuez", "nuez"),
)
ejemplo_1

En este caso, tenemos información sobre la evolución de los precios por año de dos productos. Tenemos las columnas “años_precios” y “Producto” pero tanto años como precios debieran ser en realidad columnas por sí solas, de otra forma, un gráfico con esta información es imposible de entender.

ggplot(ejemplo_1) +
  geom_point(mapping = aes(x = años_precios, y = Producto)) +
  ggtitle("Grafico 2: Información desprolija sobre almendras y nueces")

Para volver este conjunto de datos a uno tidy, procederemos a usar la función separate para ahora tener tres columnas, cada una con sus respectivas variables.Gracias a esto, ahora la información está mucho más ordenada, es más fácil de graficarla y entenderla, como mostramos a continuación.

ejemplo_1 <- separate(ejemplo_1, años_precios, c("Años", "Precios"), sep ="_")
ejemplo_1
ggplot(ejemplo_1) +
  geom_point(mapping = aes(x = Precios, y = Años, colour = Producto, size = Precios)) +
  ggtitle("Grafico3: Información ordenada respecto a nueces y almendras")

Por ende, la importancia del tidy data es que gracias a esta condición de orden, trabajar con datos es mucho más simple y permite que al graficar, la información sea entendible para todas las personas.

LS0tDQp0aXRsZTogIlRpZHkgRGF0YSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCkNocmlzdG9waGVyIEplcmV6LCBGZXJuYW5kYSBNYXJjaGVzc2kgeSBBbnRvbmlhIFB1bWFyaW5vDQoNCmBgYHtyfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGdncGxvdDIpDQpgYGANCg0KVHJhYmFqYXIgY29uIGRhdG9zIHB1ZWRlIHNlciBtdXkgcsOhcGlkbyBvIG11eSBsZW50bywgZGVwZW5kaWVuZG8gZGUgY8OzbW8gZXN0w6luIG9yZ2FuaXphZG9zIGxvcyBkYXRvcy4gRW4gdW4gbXVuZG8gcGVyZmVjdG8gY3JlZXLDrWFtb3MgcXVlIHRvZG9zIGxvcyBkYXRvcyBxdWUgZW50cmVnYW4gb3JnYW5pemFjaW9uZXMgbyBpbnN0aXR1Y2lvbmVzIGVzdMOhbiBiaWVuIG9yZ2FuaXphZG9zLCBwb3IgZW5kZSwgdHJhYmFqYXIgY29uIGVsbG9zIHNlcsOtYSBmw6FjaWwgeSByw6FwaWRvLiBTaW4gZW1iYXJnbywgW0hhZGxleSBXaWNraGFtXShodHRwOi8vaGFkbGV5Lm56KSBzZcOxYWxhIHF1ZSBsYSByZWFsaWRhZCBlcyBtdXkgZGlzdGludGEuIA0KDQpFbiBzdXMgYcOxb3MgZGUgZXhwZXJpZW5jaWEgdHJhYmFqYW5kbyBjb24gZGF0b3MsIFdpY2toYW0gc2UgaGEgcGVyY2F0YWRvIHF1ZSAqKmVzIHVuYSByZWFsaWRhZCBxdWUgbG9zIGRhdG9zIHZpZW5lbiBvcmdhbml6YWRvcyBkZSBtYW5lcmEgZXh0cmHDsWEqKiB5IHF1ZSBpbmNsdXNvLCBoYXkgbXVjaGFzIGZvcm1hcyBlbiBxdWUgbG9zIGRhdG9zIGVzdMOpbiBtYWwgb3JnYW5pemFkb3MuIEFycmVnbGFyIGVzdG8gbWFudWFsbWVudGUsIGltcGxpY2FiYSBtdWNobyB0aWVtcG8gcGVybyBhZGVtw6FzIGNvbmxsZXZhYmEgbXVjaG9zIGVycm9yZXMgZGUgdGlwZW8uIFBvciBlc3RhIHJhesOzbiBzZSBwcm9wdXNvIGNyZWFyIHVuIHNpc3RlbWEgcXVlIG9yZGVuYXJhIGxvcyBkYXRvcyBkZSBtYW5lcmEgcsOhcGlkYSwgbyBjb21vIGRpY2UgZWwgYXV0b3IsIHVuYSBtYW5lcmEgbcOhcyBsaW1waWEgZGUgdGVuZXIgbG9zIGRhdG9zLg0KDQpTdSBtaXNpw7NuIGxvIGxsZXbDsyBhIGludmVudGFyIHVuIHBhcXVldGUgZW4gZWwgcHJvZ3JhbWEgUnN0dWRpbywgZG9uZGUgY3Jlw7MgdW4gc2lzdGVtYSBtdWNobyBtw6FzIHNpbXBsZSB5IHLDoXBpZG8gZGUgdHJhYmFqYXIgY29uIGRhdG9zLCBlbCAqKnRpZHkgZGF0YSoqLiAgDQoNCkxvcyB0aWR5IGRhdGEsIG8gZGF0b3MgcHJvbGlqb3MsIHNvbiB1bmEgKipmb3JtYSBkZSBvcmRlbmFyIHkgbGltcGlhciBsYSBpbmZvcm1hY2nDs24qKiBkZSB1bmEgbWFuZXJhIHF1ZSBwZXJtaXRlIHNlciBsZcOtZGEgeSBlbnRlbmRpZGEgZGUgbWFuZXJhIG11Y2hvIG3DoXMgZsOhY2lsIHkgZXhhY3RhLiBQYXJhIHF1ZSBlc3RvIHNlYSBwb3NpYmxlIHNlIHRpZW5lbiBxdWUgY3VtcGxpciBkb3MgY29uZGljaW9uZXMgc2ltdWx0w6FuZWFtZW50ZTogcXVlIGNhZGEgY29sdW1uYSBzZWEgdW5hIHZhcmlhYmxlIHkgY2FkYSBmaWxhIHVuYSBvYnNlcnZhY2nDs24uIA0KDQpMYXMgKip2YXJpYWJsZXMqKiBzb24gbGFzIHF1ZSBjb250aWVuZW4gbG9zIHZhbG9yZXMgcXVlIG1pZGVuIHVuIG1pc21vIGF0cmlidXRvLCBjb21vICBlbCB0aWVtcG8sIGxhIGFsdHVyYSwgdGVtcGVyYXR1cmEsIGV0Yy4gVW5hIG9ic2VydmFjacOzbiBlbiBjYW1iaW8sICBjb250aWVuZSB0b2RvcyBsb3MgdmFsb3JlcyBtZWRpZG9zIGVuIGxhIG1pc21hIHVuaWRhZCBjb21vIHVuYSBwZXJzb25hLCB1biBkw61hIG8gdGlwb3MgZGUgZnJ1dGEgYSB0cmF2w6lzIGRlIGxvcyBhdHJpYnV0b3MuIA0KDQpBIGNvbnRpbnVhY2nDs24sIHBvZGVtb3Mgb2JzZXJ2YXIgdW4gZWplbXBsbyBkZSBkYXRvcyBxdWUgbm8gc29uIHByb2xpam9zOiB2ZW1vcyBxdWUgdG9kb3MgbG9zIGVuY2FiZXphZG9zIGRlIGxhcyBjb2x1bW5hcyBlbiB2ZXJkYWQgY29ycmVzcG9uZGVuIGEgdmFsb3Jlcy4gU2kgYmllbiBlcyBldmlkZW50ZSBxdWUgZXN0YSB0YWJsYSBub3MgZGEgaW5mb3JtYWNpw7NuIHNvYnJlIHRyZXMgbmnDsW9zLCB0cmFiYWphciBlbiBSc3R1ZGlvIGNvbiBlc3RvcyBkYXRvcyB0YWwgY29tbyBzZSBwcmVzZW50YW4gZXMgbXV5IGVuZ29ycm9zbywgcHVlc3RvIHF1ZSBsYXMgdmFyaWFibGVzIGVzdMOhbiBlbiBsYXMgY29sdW1uYXMuDQoNCmBgYHtyfQ0KcHJvYmFuZG9famlqaSA8LSB0aWJibGUoDQogIA0KICBNYXJ0aW4gPSBjKCIxLDQwIG1ldHJvcyIpLA0KICBBZ3VzdGluID0gYygiMSw2NSBtZXRyb3MiKSwNCiAgSm9hcXVpbiA9IGMoIjEsNzAgbWV0cm9zIikNCikNCmBgYA0KDQojI05vIHRpZHkNCmBgYHtyfQ0KdGliYmxlKA0KICBNYXJ0aW4gPSBjKCIxLDQwIG1ldHJvcyIpLA0KICBBZ3VzdGluID0gYygiMSw2NSBtZXRyb3MiKSwNCiAgSm9hcXVpbiA9IGMoIjEsNzAgbWV0cm9zIikNCikNCmBgYA0KDQpBbCBpbnRlbnRhciBncmFmaWNhciBjb24gZ2dwbG90LCBubyBoYXkgbmFkYSBxdWUgYWdydXBlIGEgTWFydMOtbiwgQWd1c3TDrW4gbyBKb2FxdcOtbiwgcHVlcyB0b2RvcyBlbGxvcyBzb24gdmFyaWFibGVzIGRlc3BhcnJhbWFkYXMgZW4gZGlzdGludGFzIGNvbHVtbmFzLCBwb3IgbG8gdGFudG8gZXMgbmVjZXNhcmlvIGRlamFyIHRvZG9zIGVzdG9zIG5vbWJyZXMgZW4gdW5hIG1pc21hIGNvbHVtbmEuIExvIG1pc21vIHBhc2EgY29uIGxhcyBlc3RhdHVyYXMsIHBvciBlbmRlLCBlcyBuZWNlc2FyaW8gYnVzY2FyIG90cmEgbWFuZXJhIGRlICBvcmdhbml6YXIgbG9zIGRhdG9zIHBhcmEgcHJvY2VzYXJsb3MgZGUgbWFuZXJhIG9yZGVuYWRhIHkgcG9zdGVyaW9ybWVudGUgcG9kZXIgZ3JhZmljYXJsb3MuDQoNCmBgYHtyfQ0KZ2dwbG90KHByb2JhbmRvX2ppamkpICsNCiAgZ2VvbV9iYXIobWFwcGluZyA9IGFlcyh4ID0gbWV0cm9zKSkNCmBgYA0KDQoNCsK/Q8OzbW8gYXJyZWdsYXIgZXN0bz8gQ29udmlydGllbmRvIGVzdGEgaW5mb3JtYWNpw7NuIGEgdGlkeSBkYXRhLiBSc3R1ZGlvIG9mcmVjZSBmdW5jaW9uZXMgcXVlIG5vcyBheXVkYW4gZsOhY2lsbWVudGUgYSByZWFsaXphciBlc3RhIHRhcmVhLCBlc3BlY8OtZmljYW1lbnRlIGxhIGZ1bmNpw7NuICoqZ2F0aGVyKiouICBHcmFjaWFzIGEgZWxsYSwgcG9kZW1vcyBhZ3J1cGFyIGxhIGluZm9ybWFjacOzbiBlbiB0b3JubyBhIGRvcyBjb2x1bW5hczogTmnDsW9zIHkgRXN0YXR1cmEuICANCg0KDQpgYGB7cn0NCnByb2JhbmRvX2ppamkgPC10aWR5cjo6Z2F0aGVyKGRhdGEgPSBwcm9iYW5kb19qaWppLA0KICAgICAgICAgICAgICBrZXkgPSBOacOxb3MsDQogICAgICAgICAgICAgIHZhbHVlID0gRXN0YXR1cmEpDQogICAgICAgICAgICAgIA0KYGBgDQoNCmBgYHtyfQ0KcHJvYmFuZG9famlqaQ0KDQpgYGANCg0KWWEgcXVlIG51ZXN0cmEgaW5mb3JtYWNpw7NuIHNlIHZvbHZpw7MgdGlkeSwgZXMgZGVjaXIsIHF1ZSBsYXMgdmFyaWFibGVzICBhaG9yYSBlc3TDoW4gZW4gZXMgbXV5IGbDoWNpbCBncmFmaWNhciBsb3MgZGF0b3MgcXVlIGVudHJlZ2EuIEEgY29udGludWFjacOzbiwgbW9zdHJhbW9zIHVuIGVqZW1wbG8gdXNhbmRvIGVsIHBhcXVldGUgR2dwbG90IHBhcmEgaGFjZXIgdW4gZ3LDoWZpY28gZGUgcHVudG9zIGRvbmRlIGNhZGEgbmnDsW8gZXN0w6EgcmVsYWNpb25hZG8gY29uIHN1IGVzdGF0dXJhLg0KDQpgYGB7cn0NCmdncGxvdChwcm9iYW5kb19qaWppKSArDQogIGdlb21fY291bnQoYWVzKE5pw7FvcywgRXN0YXR1cmEsIGNvbG91ciA9IE5pw7FvcykpICsNCiAgZ2d0aXRsZSgiR3JhZmljbyAxOiBJbmZvcm1hY2nDs24gdGlkeSBkZSBsb3MgbmnDsW9zIikNCg0KYGBgDQoNCg0KDQpMYSBzaXR1YWNpw7NuIGFudGVyaW9yLCBjb21vIGV4cGxpY2EgV2lja2hhbSwgZXMgdW5vIGRlIGxvcyBwcm9ibGVtYXMgbcOhcyBjb211bmVzIG9ic2VydmFkb3MgZW4gY29uanVudG9zIGRlIGRhdG9zIGRlc29yZGVuYWRvcy4gT3Ryb3MgZWplbXBsb3Mgc3VjZWRlbiBjdWFuZG86DQoNCi0gSGF5IG11Y2hhcyB2YXJpYWJsZXMgZW4gdW5hIGNvbHVtbmENCi0gSGF5IHZhcmlhYmxlcyB0YW50byBlbiBmaWxhcyBjb21vIGNvbHVtbmFzLA0KLSBNw7psdGlwbGVzIHRpcG9zIGRlIHVuaWRhZGVzIGRlIG9ic2VydmFjacOzbiBlc3TDoW4gZW4gbGEgbWlzbWEgdGFibGENCi0gQ3VhbmRvIHVuYSBzb2xhIHVuaWRhZCBvYnNlcnZhY2lvbmFsIGVzdMOhIGVuIG3Dumx0aXBsZXMgdGFibGFzLg0KDQpBbnRlIGVzdGFzIHNpdHVhY2lvbmVzLCBoYXkgb3RyYXMgaGVycmFtaWVudGFzIHF1ZSBlc3TDoW4gYSBkaXNwb3NpY2nDs24gZGUgbG9zIHVzdWFyaW9zIHBhcmEgY29udmVydGlyIHVuIGNvbmp1bnRvIGRlIGRhdG9zIGRlc29yZGVuYWRvIGEgdW5vIG9yZGVuYWRvLiBQb3IgZWplbXBsbywgYSBjb250aW51YWNpw7NuIHByZXNlbnRhbW9zIHVuIGNvbmp1bnRvIGRlIGRhdG9zIGRvbmRlIGhheSBtdWNoYXMgdmFyaWFibGVzIGVuIHVuYSBjb2x1bW5hLiANCg0KDQpgYGB7cn0NCmVqZW1wbG9fMSA8LSB0aWJibGUoDQogIGHDsW9zX3ByZWNpb3MgPSBjKCIyMDE3XzcwMDAiLCAiMjAxOF84MDAwIiwgIjIwMTlfOTAwMCIsICIyMDE3XzYwMDAiLCAiMjAxOF83MDAwIiwgIjIwMTlfODAwMCIpLA0KICBQcm9kdWN0byA9IGMoImFsbWVuZHJhIiwgImFsbWVuZHJhIiwgImFsbWVuZHJhIiwibnVleiIsICJudWV6IiwgIm51ZXoiKSwNCikNCmBgYA0KDQpgYGB7cn0NCmVqZW1wbG9fMQ0KYGBgDQoNCkVuIGVzdGUgY2FzbywgdGVuZW1vcyBpbmZvcm1hY2nDs24gc29icmUgbGEgZXZvbHVjacOzbiBkZSBsb3MgcHJlY2lvcyBwb3IgYcOxbyBkZSBkb3MgcHJvZHVjdG9zLiBUZW5lbW9zIGxhcyBjb2x1bW5hcyDigJxhw7Fvc19wcmVjaW9z4oCdIHkg4oCcUHJvZHVjdG/igJ0gcGVybyB0YW50byBhw7FvcyBjb21vIHByZWNpb3MgZGViaWVyYW4gc2VyIGVuIHJlYWxpZGFkIGNvbHVtbmFzIHBvciBzw60gc29sYXMsIGRlIG90cmEgZm9ybWEsIHVuIGdyw6FmaWNvIGNvbiBlc3RhIGluZm9ybWFjacOzbiBlcyBpbXBvc2libGUgZGUgZW50ZW5kZXIuDQoNCmBgYHtyfQ0KZ2dwbG90KGVqZW1wbG9fMSkgKw0KICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IGHDsW9zX3ByZWNpb3MsIHkgPSBQcm9kdWN0bykpICsNCiAgZ2d0aXRsZSgiR3JhZmljbyAyOiBJbmZvcm1hY2nDs24gZGVzcHJvbGlqYSBzb2JyZSBhbG1lbmRyYXMgeSBudWVjZXMiKQ0KYGBgDQoNClBhcmEgdm9sdmVyIGVzdGUgY29uanVudG8gZGUgZGF0b3MgYSB1bm8gdGlkeSwgcHJvY2VkZXJlbW9zIGEgdXNhciBsYSBmdW5jacOzbiAqKnNlcGFyYXRlKiogcGFyYSBhaG9yYSB0ZW5lciB0cmVzIGNvbHVtbmFzLCBjYWRhIHVuYSBjb24gc3VzIHJlc3BlY3RpdmFzIHZhcmlhYmxlcy5HcmFjaWFzIGEgZXN0bywgYWhvcmEgbGEgaW5mb3JtYWNpw7NuIGVzdMOhIG11Y2hvIG3DoXMgb3JkZW5hZGEsIGVzIG3DoXMgZsOhY2lsIGRlIGdyYWZpY2FybGEgeSBlbnRlbmRlcmxhLCBjb21vIG1vc3RyYW1vcyBhIGNvbnRpbnVhY2nDs24uDQoNCmBgYHtyfQ0KZWplbXBsb18xIDwtIHNlcGFyYXRlKGVqZW1wbG9fMSwgYcOxb3NfcHJlY2lvcywgYygiQcOxb3MiLCAiUHJlY2lvcyIpLCBzZXAgPSJfIikNCmBgYA0KYGBge3J9DQplamVtcGxvXzENCmBgYA0KDQoNCg0KYGBge3J9DQpnZ3Bsb3QoZWplbXBsb18xKSArDQogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gUHJlY2lvcywgeSA9IEHDsW9zLCBjb2xvdXIgPSBQcm9kdWN0bywgc2l6ZSA9IFByZWNpb3MpKSArDQogIGdndGl0bGUoIkdyYWZpY28zOiBJbmZvcm1hY2nDs24gb3JkZW5hZGEgcmVzcGVjdG8gYSBudWVjZXMgeSBhbG1lbmRyYXMiKQ0KDQpgYGANCg0KUG9yIGVuZGUsIGxhIGltcG9ydGFuY2lhIGRlbCB0aWR5IGRhdGEgZXMgcXVlIGdyYWNpYXMgYSBlc3RhIGNvbmRpY2nDs24gZGUgb3JkZW4sIHRyYWJhamFyIGNvbiBkYXRvcyBlcyBtdWNobyBtw6FzIHNpbXBsZSB5IHBlcm1pdGUgcXVlIGFsIGdyYWZpY2FyLCBsYSBpbmZvcm1hY2nDs24gc2VhIGVudGVuZGlibGUgcGFyYSB0b2RhcyBsYXMgcGVyc29uYXMuDQoNCg0KDQo=