En R, la importación de datos es un paso crucial para el análisis de datos. Puedes importar datos desde diversas fuentes, como archivos CSV, Excel, bases de datos SQL y APIs web. R proporciona varias funciones y paquetes que facilitan esta tarea, permitiéndote trabajar con diferentes formatos y fuentes de datos de manera eficiente.
Código:
# Cargar paquetes necesarios
library(readr) # Para leer archivos CSV
library(readxl) # Para leer archivos Excel
library(DBI) # Para conectarse a bases de datos SQL
library(RSQLite) # Para usar SQLite
# Importación desde un archivo CSV
datos_csv <- read_csv("ruta/al/archivo.csv")
# Importación desde un archivo Excel
datos_excel <- read_excel("ruta/al/archivo.xlsx", sheet = "Hoja1")
# Conexión a una base de datos SQLite
con <- dbConnect(RSQLite::SQLite(), dbname = "ruta/a/la/base_de_datos.sqlite")
# Importación de datos desde una base de datos SQL
datos_sql <- dbGetQuery(con, "SELECT * FROM tabla")
# Cerrar la conexión a la base de datos
dbDisconnect(con)
# Ejemplo de importación de datos desde una API web
library(jsonlite) # Para manejar JSON
url <- "https://api.ejemplo.com/datos"
datos_api <- fromJSON(url)
Explicación del código:
Importación desde un archivo CSV:
read_csv
del paquete readr
para leer archivos CSV. Por ejemplo, datos_csv <- read_csv("ruta/al/archivo.csv")
importa los datos desde el archivo especificado y los almacena en el data frame datos_csv
.Importación desde un archivo Excel:
read_excel
del paquete readxl
para leer archivos Excel. Por ejemplo, datos_excel <- read_excel("ruta/al/archivo.xlsx", sheet = "Hoja1")
importa los datos desde la hoja especificada del archivo Excel y los almacena en el data frame datos_excel
.Conexión a una base de datos SQLite:
DBI
para conectarse a bases de datos SQL. Por ejemplo, con <- dbConnect(RSQLite::SQLite(), dbname = "ruta/a/la/base_de_datos.sqlite")
establece una conexión a una base de datos SQLite.dbGetQuery
para ejecutar una consulta SQL y obtener los datos. Por ejemplo, datos_sql <- dbGetQuery(con, "SELECT * FROM tabla")
ejecuta la consulta y almacena los datos en el data frame datos_sql
.dbDisconnect(con)
.Importación de datos desde una API web:
jsonlite
para manejar datos en formato JSON. Por ejemplo, datos_api <- fromJSON("https://api.ejemplo.com/datos")
descarga los datos desde la URL especificada y los convierte en un data frame datos_api
.La limpieza y preparación de datos son pasos esenciales antes de realizar cualquier análisis. Estos procesos incluyen la eliminación de valores nulos, la transformación de variables, la corrección de errores y la normalización de datos. R ofrece varias funciones y paquetes, como dplyr
y tidyr
, que facilitan estas tareas, asegurando que los datos estén en el formato adecuado para el análisis.
Código:
# Cargar paquetes necesarios
library(dplyr)
library(tidyr)
# Crear un data frame de ejemplo con datos sucios
datos <- data.frame(
id = 1:10,
nombre = c("Ana", "Luis", NA, "Juan", "Sofia", "Pedro", "Marta", "Lucas", "Jose", NA),
edad = c(28, 34, 45, 23, 37, 22, NA, 30, 31, 25),
salario = c(3000, 4000, 5000, NA, 4100, 3200, 3800, 3900, NA, 3500),
departamento = c("Ventas", "IT", "HR", "IT", NA, "Ventas", "HR", "IT", "Ventas", "IT")
)
# 1. Eliminar filas con valores nulos
datos_limpios <- datos %>%
drop_na()
# 2. Rellenar valores nulos con un valor específico
datos_rellenados <- datos %>%
mutate(
nombre = replace_na(nombre, "Desconocido"),
edad = replace_na(edad, mean(edad, na.rm = TRUE)),
salario = replace_na(salario, median(salario, na.rm = TRUE)),
departamento = replace_na(departamento, "Sin asignar")
)
# 3. Corregir errores de formato o datos erróneos
# Convertir nombres a mayúsculas
datos_corregidos <- datos_rellenados %>%
mutate(nombre = toupper(nombre))
# 4. Normalización de datos
# Normalizar el salario (escalado entre 0 y 1)
datos_normalizados <- datos_corregidos %>%
mutate(salario_normalizado = (salario - min(salario)) / (max(salario) - min(salario)))
# 5. Transformar variables (por ejemplo, crear una nueva variable a partir de otra)
# Crear una nueva variable que indique si la persona es mayor de 30 años
datos_transformados <- datos_normalizados %>%
mutate(mayor_de_30 = ifelse(edad > 30, "Sí", "No"))
# Resultados finales
print(datos_transformados)
Explicación del código:
Eliminar filas con valores nulos:
drop_na()
del paquete dplyr
para eliminar filas que contienen valores nulos. En el código, datos_limpios <- datos %>% drop_na()
elimina todas las filas con cualquier valor nulo.Rellenar valores nulos con un valor específico:
replace_na()
para rellenar valores nulos con un valor específico. Por ejemplo, mutate(nombre = replace_na(nombre, "Desconocido"))
reemplaza los valores nulos en la columna nombre
con «Desconocido». Para las columnas numéricas, se puede usar la media (mean()
) o la mediana (median()
) para rellenar los valores nulos.Corregir errores de formato o datos erróneos:
mutate(nombre = toupper(nombre))
convierte todos los nombres a mayúsculas.Normalización de datos:
mutate(salario_normalizado = (salario - min(salario)) / (max(salario) - min(salario)))
normaliza la columna salario
entre 0 y 1.Transformar variables:
mutate(mayor_de_30 = ifelse(edad > 30, "Sí", "No"))
crea una nueva variable mayor_de_30
que indica si la persona tiene más de 30 años.