Trabajo con Datos Reales

Importación de datos desde diferentes fuentes

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:

  1. Importación desde un archivo CSV:

    • Utiliza la función 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.
  2. Importación desde un archivo Excel:

    • Utiliza la función 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.
  3. Conexión a una base de datos SQLite:

    • Utiliza el paquete 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.
    • Utiliza 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.
    • Cierra la conexión a la base de datos con dbDisconnect(con).
  4. Importación de datos desde una API web:

    • Utiliza el paquete 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.

Limpieza y preparación de datos para análisis

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:

  1. Eliminar filas con valores nulos:

    • Utiliza 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.
  2. Rellenar valores nulos con un valor específico:

    • Utiliza 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.
  3. Corregir errores de formato o datos erróneos:

    • Puedes transformar las variables para corregir errores de formato. Por ejemplo, mutate(nombre = toupper(nombre)) convierte todos los nombres a mayúsculas.
  4. Normalización de datos:

    • La normalización es el proceso de ajustar los valores de una variable para que estén en una escala común. Por ejemplo, mutate(salario_normalizado = (salario - min(salario)) / (max(salario) - min(salario))) normaliza la columna salario entre 0 y 1.
  5. Transformar variables:

    • Puedes crear nuevas variables basadas en las existentes. Por ejemplo, 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.