¡Auxilio! Tengo datos cuantitativos, ¿y ahora qué hago? (Parte 1)
Guía básica para empezar a trabajar con datos cuantitativos, parte 1. En este post, cómo instalar R y RStudio, importar datos e inspeccionar una tabla.
¿Empezaste un nuevo trabajo y les hiciste creer que tenías un conocimiento medio de estadística, pero solo la viste una vez en la secundaria? ¿Estás cursando una carrera de grado y te enfrentás a tu primer trabajo de análisis? ¿Venís de las ciencias sociales y cayó en tus manos un proyecto que involucra análisis cuantitativo? No temas, esta es tu salvación. Este es el primer post de una nueva saga que apunta a orientar a aquellas personas que tienen que aprender a realizar análisis estadísticos básicos en R.
No se trata de que piense que no hay información sobre esto en internet: creeme, sé que hay mucha. Pero hay dos problemas: el primero es que la amplísima mayoría está en inglés, y el segundo es que mucha de esa información está pensada como material de estudio de estadística. Y, hablemos con sinceridad, a veces solo necesitamos saber que lo que estamos haciendo no está mal, sin necesariamente entender en profundidad los modelos matemáticos que están detrás de lo que hacemos. ¿Deberíamos saberlos? Tal vez sí, tal vez no, me parece que está abierto a debate. Pero más allá de eso, mi intención es tirar un par de salvavidas y, ya que estamos, reforzar mis propios conocimientos sobre el tema.
Este primer post está dedicado a pensar ese primer, primerísimo acercamiento a las bases de datos cuantitativas. Básico básico, nivel: abrí el archivo y no sé bien qué tengo que hacer. Vamos a mencionar algunos aspectos a tener en cuenta a la hora de entender nuestras bases de datos, como los tipos de elementos que podemos tener y cómo se organizan en la tabla. En los próximos posteos vamos a avanzar con algunas medidas de tendencia central y de dispersión, que son las más importantes en los análisis descriptivos. ¡Empecemos!
Primer paso: cargar la tabla
En realidad, ya empecé mintiéndote: antes de poder mirar la tabla, tenés que tener disponible la tabla. Esto implica cargar o importar los datos a tu entorno de R. Voy a asumir que tenés instalado R y RStudio; caso contrario, tu paso cero va a ser instalar R y luego instalar RStudio (en ese orden). Cuando puedas abrir RStudio y funciona, ya tenés todo lo necesario para trabajar.
Lo primero que vas a hacer es crear un script, que va a ser el archivo donde vas a guardar tu análisis, similar a un documento de texto. Esto lo hacés en RStudio en el menú superior: File (Archivo) > New File (Nuevo archivo) > R Script. Una vez que abriste el script, vas a ver que la pantalla queda dividida en cuatro grandes secciones:
La ventana del script en la esquina superior izquierda, donde vas a escribir tu código. Esto es similar a un documento de texto: lo podés guardar y abrir en otro momento para volver a ejecutar tu análisis.
La ventana de la consola, en la esquina inferior izquierda. Aquí es donde se van a ver los resultados del código que ejecutes. También podés escribir código directamente en la consola, pero no se guarda. Además, es difícil encontrar una función previamente ejecutada cuando ya llevás un rato largo trabajando.
En la esquina superior derecha vas a encontrar el environment [entorno]. Aquí se van a almacenar todos los elementos que crees, como por ejemplo tus tablas de datos. Hay otras pestañas como History, Connections, etc.: por ahora no las vamos a usar.
En la esquina inferior derecha vas a encontrar un panel donde vas a poder navegar tus archivos [Files], donde van a aparecer los gráficos que vas a hacer [Plots] y donde vas a poder buscar información sobre los paquetes y funciones que vas a usar [Help], entre otras cosas.
La disposición de estos cuatro paneles puede variar, pero eso es a gusto y piacere de cada persona. Lo importante es que los reconozcas y que sepas que están ahí. Ahora, respecto del uso efectivo que vamos a hacer: siempre vamos a escribir las funciones en el script (no en la consola) y para ejecutarlas ubicamos el cursor en ese renglón y apretamos control + enter (también podés hacer click en el botón de Run que está en la esquina superior derecha del script, pero a mí me resulta incómodo). El resultado del comando va a aparecer en la consola. Podés probar escribiendo algo simple como 10 + 20
.
Ahora sí, la tabla. Hay muchas formas distintas de importar una tabla a tu entorno de R. La forma más fácil es ir al panel del entorno y hacer click en “Import Dataset”. Se abrirá una serie de opciones que dependerán del tipo de archivo que tenés: si la extensión de tu archivo es .csv, entonces elegí “From text (base)”; en cambio, si es un archivo .xls o .xlsx, elegí “From Excel”. Otra alternativa es buscar el archivo en la sección de Files: una vez que lo encontrás, hacés click en él y te van a aparecer dos opciones: “View file” [ver archivo] e “Import dataset” [importar el dataset]. Elegí la segunda.
En cualquier caso, te va a mostrar una vista previa de cómo se vería el archivo, luego de aceptar vas a ver que en el panel de entorno te aparece un nuevo elemento con el nombre de tu archivo. ¡Y voilá! Ya tenemos cargada la base.
Para este posteo voy a usar una base de datos sobre pingüinos de la Isla Palmer, que es la traducción al español de una base de datos muy conocida para el estudio de R. Si no tenés datos propios o si querés que tu primer acercamiento sea más controlado, podés seguir este posteo con esta misma base de datos. Para instalar el paquete y cargar la base, copiá este código en tu script y ejecutalo (para ejecutarlo, ubicás el cursor en cada línea y apretás control+enter o hacés click en “Run”):
install.packages("datos")
library(datos)
pinguinos
## # A tibble: 344 × 8
## especie isla largo_pico_mm alto_pico_mm largo_alet…¹ masa_…² sexo anio
## <fct> <fct> <dbl> <dbl> <int> <int> <fct> <int>
## 1 Adelia Torgersen 39.1 18.7 181 3750 macho 2007
## 2 Adelia Torgersen 39.5 17.4 186 3800 hemb… 2007
## 3 Adelia Torgersen 40.3 18 195 3250 hemb… 2007
## 4 Adelia Torgersen NA NA NA NA <NA> 2007
## 5 Adelia Torgersen 36.7 19.3 193 3450 hemb… 2007
## 6 Adelia Torgersen 39.3 20.6 190 3650 macho 2007
## 7 Adelia Torgersen 38.9 17.8 181 3625 hemb… 2007
## 8 Adelia Torgersen 39.2 19.6 195 4675 macho 2007
## 9 Adelia Torgersen 34.1 18.1 193 3475 <NA> 2007
## 10 Adelia Torgersen 42 20.2 190 4250 <NA> 2007
## # … with 334 more rows, and abbreviated variable names ¹largo_aleta_mm,
## # ²masa_corporal_g
Uff, cuánta información. Vamos de a poco: en la primera línea usamos la función install.packages()
para instalar el paquete. Esto lo que hace es descargar a tu computadora el paquete, para que puedas utilizarlo cuando lo necesites. La segunda línea llama el paquete con la función library()
, lo carga en tu entorno. Pensá la diferencia entre instalar y cargar un paquete de la misma forma que instalás y abrís un programa: vos podés descargar Word, pero para escribir un texto primero tenés que abrirlo. En este contexto, “paquete” y “librería” son sinónimos. Importante: cuando vuelvas a usar esta librería no necesitás volver a instalarla, así que no vuelvas a correr la primera línea, solo la segunda.
En la tercera línea cargamos el dataset “pingüinos” que está dentro del paquete que acabamos de cargar; fijate que cuando ejecutás esa línea (la palabra sola) en la consola apareció la tabla con mucha información. Esto ocurre así de fácil porque esta tabla se llama así, pero si ejecutás otra palabra, como “casita”, te va a dar el siguiente error: Error: object 'casita' not found
. Es muy importante acostumbrarse a leer los errores que devuelve RStudio, porque así podemos entender qué es lo que no está funcionando.
Ahora, para poder usar esa tabla necesitamos guardarla con un nombre, en otras palabras, necesitamos crear un objeto con esa información para poder manipularlo. Para eso vamos a usar el símbolo de asignación <-
de la siguiente forma:
pinguinos <- pinguinos
La palabra que está del lado del signo -
es el contenido del objeto, mientras que lo que está al lado del <
va a ser el nombre del objeto. También se puede crear el objeto con los elementos invertidos:
pinguinos -> ping2
Pero no es lo más frecuente ni lo más cómodo. Lo importante de todos modos es identificar el símbolo de asignación y ver que al ejecutar ese comando aparece el objeto en el Environment [entorno], el panel de la esquina superior derecha. Podemos inspeccionar el objeto haciendo click en ella o ejecutando el siguiente comando:
View(pinguinos)
Segundo paso: inspeccionar la tabla
Esta tabla de datos, que podemos llamar dataframe, está compuesta por 8 columnas y 344 filas, cada una de ellas corresponde a una observación. En este caso, cada observación corresponde a un pingüino. Esta no es la única forma de organizar la información, pero es la más común en este tipo de análisis y la que más te va a facilitar la vida. Sin embargo, es muy probable que la tabla de tus propios datos no tenga este formato; más adelante veremos qué hacer en ese caso.
El lenguaje R tiene varias funciones que permiten tener una idea global del contenido de la tabla sin profundizar caso por caso. Para ver la estructura, podemos usar la función str()
str(pinguinos)
## tibble [344 × 8] (S3: tbl_df/tbl/data.frame)
## $ especie : Factor w/ 3 levels "Adelia","Barbijo",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ isla : Factor w/ 3 levels "Biscoe","Dream",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ largo_pico_mm : num [1:344] 39.1 39.5 40.3 NA 36.7 39.3 38.9 39.2 34.1 42 ...
## $ alto_pico_mm : num [1:344] 18.7 17.4 18 NA 19.3 20.6 17.8 19.6 18.1 20.2 ...
## $ largo_aleta_mm : int [1:344] 181 186 195 NA 193 190 181 195 193 190 ...
## $ masa_corporal_g: int [1:344] 3750 3800 3250 NA 3450 3650 3625 4675 3475 4250 ...
## $ sexo : Factor w/ 2 levels "hembra","macho": 2 1 1 NA 1 2 1 2 NA NA ...
## $ anio : int [1:344] 2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ...
Esta función describe a grandes rasgos qué tipo de dato hay en cada una de las columnas. Vemos por ejemplo que las dos primeras columnas, especie
e isla
, y la penúltima, sexo
, tienen datos de tipo factor, es decir, son valores categóricos, que permiten agrupar los datos en distintos grupos. Luego tenemos una serie de columnas con valores numéricos sobre el largo y el alto del pico, el largo de la aleta, la masa corporal y el año en que fueron observados esos pingüinos. Sin embargo, verás que algunos son de tipo num
y otros de tipo int
: los num
son todos los números, pero los int
son los números enteros (es decir, los que no tienen decimales).
Otra función útil para estos primeros momentos es summary()
:
summary(pinguinos)
## especie isla largo_pico_mm alto_pico_mm largo_aleta_mm
## Adelia :152 Biscoe :168 Min. :32.10 Min. :13.10 Min. :172.0
## Barbijo: 68 Dream :124 1st Qu.:39.23 1st Qu.:15.60 1st Qu.:190.0
## Papúa :124 Torgersen: 52 Median :44.45 Median :17.30 Median :197.0
## Mean :43.92 Mean :17.15 Mean :200.9
## 3rd Qu.:48.50 3rd Qu.:18.70 3rd Qu.:213.0
## Max. :59.60 Max. :21.50 Max. :231.0
## NA's :2 NA's :2 NA's :2
## masa_corporal_g sexo anio
## Min. :2700 hembra:165 Min. :2007
## 1st Qu.:3550 macho :168 1st Qu.:2007
## Median :4050 NA's : 11 Median :2008
## Mean :4202 Mean :2008
## 3rd Qu.:4750 3rd Qu.:2009
## Max. :6300 Max. :2009
## NA's :2
Esta función realiza una serie de estadísticos descriptivos de las variables (columnas) presentes en la tabla. Si estás leyendo esto es posible que no entiendas muy bien estos resultados o no sepas bien qué hacer con ellos: no te preocupes, van a ser el tema del próximo posteo. Lo que importa ahora es que sepas que esta función te devuelve un paneo general que te sirve para empezar a entender un poco más los datos.
Cierre
En este posteo vimos entonces la previa de cualquier análisis cuantitativo: instalamos R y RStudio, importamos los datos y empezamos a ver qué hay en la tabla. ¡Ya es un montón! En el próximo posteo vamos a empezar a trabajar con estadística descriptiva.
Como siempre, recordá que podés suscribirte a mi blog para no perderte ninguna actualización, y si te quedó alguna consulta no dudes en contactarme. Y, si te gusta lo que hago, podés invitarme un cafecito desde Argentina o un kofi.