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
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).
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
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/
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
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:
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)
[]
:
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:
Practica lo que has aprendido descargando el siguiente fichero Rmd, abriéndolo con Rstudio y resolviendo las preguntas de 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.
Una vez terminado este documento puede: