Manipulación básica de dataframes

Manipulación básica de dataframes

El dataframe

R es un lenguaje de programación estadístico y para hacer estadística necesitamos trabajar con conjuntos de datos (datasets). Estos conjuntos de datos se componen normalmente de

  • Observaciones (o instancias)
  • Variables (asociadas a dicha observaciones)

El dataframe es la estructura fundamental para manipular conjuntos de datos en R.

El dataframe se utiliza para guardar tablas de datos. Se puede considerar una lista de vectores de igual longitud que no tienen por qué ser del mismo tipo.

Este es un ejemplo de cómo se ve un dataframe: un conjunto de datos ordenado por filas y columnas donde cada fila es un sujeto, las columnas son las variables y a lo largo de las filas se pueden observar los valores que toma cada sujeto para cada una de las variables.

 

 

Como se puede observar, algunas variables son cualitativas (como Treatement, que es una cadena de caracteres) y otras son cuantitativas (como conc, que es un número entero), por lo que en un dataframe las columnas no tienen por qué ser del mismo tipo entre ellas.

Asimismo, en rojo se selecciona un subconjunto que comprende las filas de la 3 a la 7 (3:7 en R) y las columnas de la 2 a la 4 (2:4 en R).

Crear, utilizar y leer dataframes

data.frame() para crear conjuntos de datos

Como vemos en el siguiente ejemplo, la función para crear un dataframe es data.frame()

letras <- c("aa", "bb", "cc") 
logicos <- c(TRUE, FALSE, TRUE) 
df <- data.frame(letras, logicos)
df

Completa el código introduciendo números enteros en el objeto num

num <- c(...)
letras <- c("aa", "bb", "cc") 
logicos <- c(TRUE, FALSE, TRUE) 
df <- data.frame(letras, logicos, num)
df
num <- c(1,2,3) # u otros números cualesquiera

Habéis podido observar que la longitud de los vectores que componen el dataframe debe ser la misma. Para comprobar la longitud de un vector se utiliza la función length()

length(letras)
## [1] 3

Importar conjuntos de datos incluidos en R

Hay muchos conjuntos de datos que están incluidos en los diferentes paquetes de R. En el paquete básico base que se instala automáticamente en R hay algunos. Estos se pueden ver escribiendo data() como sigue:

data()

En este tutorial vamos a utilizar reiteradamente dos conjuntos de datos que están incluidos en R: CO2 y mtcars

CO2 contiene información sobre la resistencia al frío de una especie de césped:

- Plant: Identificador de cada planta
- Type: lugar de origen de la planta
- Treatment: Helada o no helada
- conc: Concentración de CO2 en el ambiente
- uptake: Absorción del CO2

Para información más detallada sobre CO2 visita: https://stat.ethz.ch/R-manual/R-patched/library/datasets/html/zCO2.html

mtcars contiene información sobre coches relativa a:

- mpg: Consumo (miles per gallon)
- cyl: Número de cilindros
- disp: Desplazamiento
- hp: Caballo de vapor
- drat: Eje trasero
- wt: Peso (1000 lib)
- qsec: Tiempo que tarda en recorrer 1/4 de milla desde reposo (seg)
- vs: Forma del motor
- am: Tipo de transmisión
- gear: Engranajes
- carb: Número de carburadores

Para información más detallada sobre mtcars visita: https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/mtcars.html

Para ver qué pinta tienen los coches que se incluyen como sujetos de mtcars visita: https://www.robertmylesmcdonnell.com/content/posts/mtcars/

read.table() para leer conjuntos de datos

Por último, también se puede leer un conjunto de datos que se encuentre en la nube o en una carpeta de tu ordenador usando la función read.table(). Esta función tiene varios argumentos, a continuación se ven los esenciales y para un recordatorio más extenso leer ?read.table.

df <- read.table(file="misdatos.csv", header=F, sep=";", dec=".")

Si el conjunto de datos tiene este formato al abrirlo con el bloc de notas:

id;edad;gasto
1;27;5
2;33;8
3;18;1
4;65;5

Funciones básicas de descripción

Vamos a utilizar las funciones básicas de descripción de conjuntos de datos para descubrir información sobre el conjunto de datos CO2 del paquete datasets

  • head()
  • tail()
  • summary()
  • str()
  • nrow(), ncol(), dim()

Si no recordamos para qué sirven las funciones anteriores, podemos utilizar el comando help() o ? para desplegar la ayuda:

?head

Usando una sola función, muestra cuántas filas y columnas tiene el dataset CO2

dim(CO2)

Usando una sola función, muestra estadísticas básicas del dataset CO2 (frecuencias para variables cualitativas y medias y otros parámetros para variables cuantitativas)

summary(CO2)

Usando una sola función, describe el tipo de las variables del dataset CO2

str(CO2)

Responde al siguiente cuestionario:

Filtrado de datos

Para seleccionar columnas de un dataframe tenemos las siguientes opciones:

  • $: seguido del nombre de una variable selecciona solo una columna (el tabulador será de gran ayuda para autocompletar el nombre de la variable)
mtcars$mpg
##  [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4
## [16] 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7
## [31] 15.0 21.4

Utiliza el $ para seleccionar la columna disp del dataframe mtcars y calcula su media.

mean(...)
mean(mtcars$disp)
  • []:

    • se puede utilizar con las posiciones de las columnas a seleccionar
mtcars[c(1,3)]
- o con los nombres de las columnas a seleccionar
mtcars[c("mpg","disp")]

Utiliza el [] para seleccionar las columnas 1 y 5 del dataset mtcars y calcular estadísticos de dichas columnas seleccionadas.

summary(...)
summary(mtcars[c(1,5)])   

Para seleccionar filas tan solo tendremos que determinar el rango de filas que se desea mostrar

mtcars[1:4,]

Responde al siguiente cuestionario:

Nota: Recuerda que con la notación [] se considera que se seleccionan [rangofilas, rangocolumnas]. Vacío significa "todas", o sea:

  • [rangofilas,]: las filas de ese rango y todas las columnas

  • [,rangocolumnas]: todas las filas y las columnas de ese rango.

  • Si tan solo escribimos un rango sin coma, se seleccionarán las columnas: [columnas]. Veámoslo con un ejemplo:

mtcars[1:3,]
mtcars[,1:3]
mtcars[1:3]

Además de rangos numéricos, se pueden utilizar expresiones para hacer el filtrado. Por ejemplo, para seleccionar las filas para las cuales la variable hp es mayor que 200 hay que utilizar la expresión mtcars$hp >200 dentro de los corchetes [], como sigue:

mtcars[mtcars$hp >200 , ]

Utiliza R o deduce la siguiente pregunta:

Selecciona los valores de cyl (columna) para los cuales la variable disp es inferior a 100.

mtcars[ ... , ...]
mtcars[ mtcars$disp<100 , "cyl" ]

Por último, crear un nuevo dataframe a partir del filtrado de otro es sencilo, simplemente asígnalo a un objeto. Por ejemplo, mtcarsF puede ser mtcars filtrado:

Autoevaluación

Practica lo que has aprendido descargando el siguiente fichero Rmd, abriéndolo con Rstudio y resolviendo las preguntas de autoevaluación.

Autoevaluación

Para descargar el Rmd de autoevaluación haz click derecho en el enlace anterior y "Guardar enlace como..." y selecciona dónde quieres guardarlo.

Si al abrirlo con Rstudio observas caracteres extraños, selecciona File/Reopen with encoding/UTF-8 y ya se debe ver bien.

Continuar con tabulaR

Una vez terminado este documento puede:



Última actualización: 20201116-1208 DOI

Volver a Mod 1: Manipulación de datos