Un dataframe es una estructura de datos en R similar a una tabla, donde las columnas representan variables y las filas representan observaciones.
Es posible crear un dataframe con la función
data.frame().
#Vectores o listas
nombre = c("Ana", "Luis", "Carlos", "Sofia")
edad = c(23, 25, 30, 22)
ciudad = c("Bogota", "Medellin", "Cali", "Barranquilla")
ingresos = c(2500000, 3000000, 2800000, 2700000)
# Crear un dataframe manualmente
df <- data.frame(nombre,edad,ciudad,ingresos)
# Ver el dataframe
df
Para acceder a las columnas de un dataframe existen varias maneras
# Acceder a una columna específica
df$nombre
## [1] "Ana" "Luis" "Carlos" "Sofia"
# Acceder a una fila específica
df[2, ]
# Acceder a una celda específica
df[3, 2]
## [1] 30
Es posible agregar, modificar o eliminar columnas y filas en un dataframe
Agregar una nueva columna
# Agregar una nueva columna
df$puntaje <- c(85, 90, 78, 88)
df
Modificar un valor
# Modificar un valor
df$ingresos[1] <- 2600000
Eliminar una columna
# Eliminar una columna
df$ciudad <- NULL
df
También, es posible filtrar filas que cumplen ciertas condiciones:
# Filtrar personas con ingresos mayores a 2.8 millones
subset(df, ingresos > 2800000)
# Filtrar personas con puntaje mayor a 80
df[df$puntaje > 80, ]
# Ordenar por edad
df_ordenado <- df[order(df$edad), ]
df_ordenado
Guardar un dataframe como un archivo CSV (Este es un formato muy común en el que se suelen encontrar las bases de datos):
# Guardar dataframe en un archivo CSV
write.csv(df, "datos.csv", row.names = FALSE)
help("write.csv")
## starting httpd help server ... done
# Leer un archivo CSV
df_importado <- read.csv("datos.csv")
df_importado
Otra forma para importar datos, es a través de la ventana de archivos
También puedo importar datos directamente desde donde esté guardada la base de datos en el equipo (cuando se utiliza la versión Rstudio de escritorio) La línea de código sería la siguiente:
R incluye varias bases de datos preinstaladas. En este ejemplo,
usaremos mtcars, una base de datos con información sobre
automóviles.
# Cargar la base de datos mtcars
data("mtcars")
datos <- mtcars
head(datos)# Ver las primeras filas
Para ver las dimensiones del dataframe o el tamaño de mi base de datos:
# Dimensiones del dataframe
dim(datos)
## [1] 32 11
Ver los tipos de datos o variables
# Ver estructura de los datos
str(datos)
## 'data.frame': 32 obs. of 11 variables:
## $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## $ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
## $ disp: num 160 160 108 258 360 ...
## $ hp : num 110 110 93 110 175 105 245 62 95 123 ...
## $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
## $ wt : num 2.62 2.88 2.32 3.21 3.44 ...
## $ qsec: num 16.5 17 18.6 19.4 17 ...
## $ vs : num 0 0 1 1 0 1 0 1 1 1 ...
## $ am : num 1 1 1 0 0 0 0 0 0 0 ...
## $ gear: num 4 4 4 3 3 3 3 4 4 4 ...
## $ carb: num 4 4 1 1 2 1 4 2 2 4 ...
Hacer un resumen estadístico (muy general). Esta es la primera impresión de todas las variables
# Resumen estadístico general
summary(datos)
## mpg cyl disp hp
## Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0
## 1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5
## Median :19.20 Median :6.000 Median :196.3 Median :123.0
## Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7
## 3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0
## Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0
## drat wt qsec vs
## Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000
## 1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000
## Median :3.695 Median :3.325 Median :17.71 Median :0.0000
## Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375
## 3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000
## Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000
## am gear carb
## Min. :0.0000 Min. :3.000 Min. :1.000
## 1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
## Median :0.0000 Median :4.000 Median :2.000
## Mean :0.4062 Mean :3.688 Mean :2.812
## 3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :1.0000 Max. :5.000 Max. :8.000
Verificar:
# Verificar valores faltantes
sum(is.na(datos))
## [1] 0
Eliminar:
# Si hubiera valores NA, podríamos eliminarlos con:
df <- na.omit(datos)
Si algunas columnas no son relevantes para el análisis, es posible eliminarlas.
# Eliminar la columna 'carb'
datos
datos$carb <- NULL
head(datos)
Se pueden filtrar observaciones basadas en condiciones específicas.
# Filtrar autos con más de 20 millas por galón (mpg)
df_filtrado <- subset(datos, mpg > 20)
df_filtrado
Podemos agregar columnas nuevas basadas en cálculos.
# Crear una nueva columna con consumo en km por litro
datos$km_per_l <- datos$mpg * 0.425144
head(datos)
Podemos convertir una variable numérica en categórica.
str(datos)
## 'data.frame': 32 obs. of 11 variables:
## $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## $ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
## $ disp : num 160 160 108 258 360 ...
## $ hp : num 110 110 93 110 175 105 245 62 95 123 ...
## $ drat : num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
## $ wt : num 2.62 2.88 2.32 3.21 3.44 ...
## $ qsec : num 16.5 17 18.6 19.4 17 ...
## $ vs : num 0 0 1 1 0 1 0 1 1 1 ...
## $ am : num 1 1 1 0 0 0 0 0 0 0 ...
## $ gear : num 4 4 4 3 3 3 3 4 4 4 ...
## $ km_per_l: num 8.93 8.93 9.69 9.1 7.95 ...
# Convertir la variable 'cyl' (cilindros) en factor
datos$cyl <- as.factor(datos$cyl)
# Ver estructura para confirmar el cambio
str(datos)
## 'data.frame': 32 obs. of 11 variables:
## $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## $ cyl : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ...
## $ disp : num 160 160 108 258 360 ...
## $ hp : num 110 110 93 110 175 105 245 62 95 123 ...
## $ drat : num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
## $ wt : num 2.62 2.88 2.32 3.21 3.44 ...
## $ qsec : num 16.5 17 18.6 19.4 17 ...
## $ vs : num 0 0 1 1 0 1 0 1 1 1 ...
## $ am : num 1 1 1 0 0 0 0 0 0 0 ...
## $ gear : num 4 4 4 3 3 3 3 4 4 4 ...
## $ km_per_l: num 8.93 8.93 9.69 9.1 7.95 ...
# Ordenar por caballos de fuerza (hp)
df_ordenado <- datos[order(datos$hp), ]
head(df_ordenado)
En la siguiente guía (número 3) podrás encontrar lo que necesitas saber para hacer tablas y gráficios en R