Email efmartinez@icesi.edu.co

Qries eduard-martinez

Qries @emartigo

Qries https://eduard-martinez.github.io


📂 En este capítulo el estudiante aprenderá a mantener su trabajo en R ordenado y accesible. Descubrirá qué es un directorio de trabajo, cómo configurarlo y cómo utilizar proyectos en RStudio para gestionar tus análisis de forma estructurada. Verá cómo crear, abrir y administrar proyectos, así como leer y guardar conjuntos de datos para que siempre pueda retomar su trabajo sin perder información.

1 Directorio de trabajo

1.1 ¿Qué es un directorio de trabajo?

El directorio de trabajo es la carpeta que R toma como punto de partida para leer y guardar archivos. Todo lo que guarde o cargue desde R, si no especificas otra ruta, se ubicará aquí. Piense en él como la carpeta predeterminada de tu proyecto.

La ruta que ves en la captura es: Proyectos Eduard/3_tidydata_tidyverse/public

Para conocer tu directorio actual ejecuta la función getwd():

getwd()  # Muestra el directorio de trabajo actual
[1] "D:/Dropbox/Teaching/Recursos R/2_read_write_files"

Para cambiarlo manualmente (aunque no es la mejor práctica):

setwd("C:/ruta/a/tu/carpeta") 

Una forma práctica de evitar tener que configurar el directorio de trabajo dentro del código es abrir RStudio directamente desde el archivo script que vas a utilizar, en lugar de abrir primero el programa. Al abrir RStudio haciendo doble clic en el script, el directorio de trabajo se ajusta automáticamente a la carpeta donde se encuentra ese archivo.

💡 Evite usar setwd() y, en su lugar, prefiera trabajar con Proyectos de RStudio para garantizar rutas relativas y portabilidad.

1.2 ¿Qué son los proyectos?

Los proyectos son una manera alternativa de lidiar con la ruta de trabajo. Los proyectos permiten empaquetar datos y código en una especie de contenedor en el que se fija un directorio de trabajo relativo a cada equipo; haciendo más sencillo el proceso lectura y escritura de datos.

1.3 ¿Cómo crear un proyecto?

Puede crear un proyecto desde cero o puede asociar una carpeta existente a un proyecto:

1.3.1 Crear un proyecto desde cero

  • En RStudio: File → New Project → New Directory → New Project.

  • Asigne un nombre y ubicación de la carpeta.

  • RStudio creará la carpeta y añadirá un archivo .Rproj dentro.

1.3.2 Asociar una carpeta existente a un proyecto

  • File → New Project → Existing Directory → Create Project.

  • RStudio agregará el archivo .Rproj dentro de la carpeta sin mover otros archivos.

1.4 Abrir un proyecto

Cuándo se abre el archivo .Rproj automáticamente Rstudio establece como directorio de trabajo la carpeta que contiene el archivo .Rproj.

Ruta y ubicación del archivo:

El archivo .Rproj siempre debe ubicarse en la carpeta raíz del proyecto.

Para abrirlo:

  • Localice el archivo en su explorador de archivos (por ejemplo: C:/Usuarios/Eduard/MisProyectos/mi_proyecto.Rproj).

  • Haga doble clic sobre él, o bien, desde RStudio vaya a File → Open Project… y selecciónelo.

2 Cargar datos

Antes de comenzar cualquier análisis en R, el primer paso, es cargar los datos que se van a procesar. Los datos pueden encontrarse en archivos con distintas extensiones, como .csv, .txt, .xlsx, .dta o .rds, e incluso provenir de bases de datos o URLs. Conocer el formato del archivo le ayudará a elegir la función adecuada para importarlo y asegurar que la información se lea sin errores.

En esta sección se muestra tres formas de cargar datos en R:

  • Usando el menú de RStudio, ideal para principiantes y para explorar archivos antes de cargarlos.

  • Usando funciones base de R (read.csv, read.table) o paquetes específicos (readxl para Excel), que ofrecen control completo sobre cómo se leen los datos.

  • Usando paquetes simplificados como rio, que unifican la importación de múltiples formatos con una sola función y facilitan la escritura y conversión de archivos.

2.1 Usando el menú de RStudio

RStudio permite importar datos desde el menú file:

  • Dirigase a File → Import Dataset → From Text (base)…

  • Seleccione el archivo que deseas leer.

  • Aparecerá un panel de vista previa donde R interpreta tus datos.

  • Ajusta las opciones (separador, encabezados, codificación) si es necesario.

  • Haz clic en Import y R cargará los datos.

💡 El código generado por este procedimiento aparecerá en la consola. Puedes copiarlo en su script para automatizar futuras importaciones.

A continuación se muestra la ventana que aparece al cargar datos desde el menú file.

Esta ventana combina la vista previa del archivo original y cómo quedará en R según la configuración elegida. En esa misma interfaz puedes modificar argumentos como: el nombre del objeto que se creará, la codificación de caracteres (Encoding), si la primera fila será el encabezado (Heading), el separador de columnas (Separator) y otros más que se muestran en la captura a continuación:

2.2 Usando funciones base de R

R ofrece un conjunto de funciones base que permiten leer y escribir archivos en diferentes formatos de forma directa. Entre las más usadas se encuentran read.csv() y read.table() para archivos de texto y valores separados por comas, o readRDS() para objetos guardados en formato nativo de R.

Al usar funciones base se recomienda especificar correctamente argumentos como:

  • header: Indica si la primera fila contiene nombres de columnas (TRUE o FALSE).

  • sep: Separador de columnas (, para CSV, “ para tabulaciones, ; para CSV europeos).

  • dec: Símbolo para decimales (“.” o “,”).

  • fileEncoding: Si el archivo tiene tildes o caracteres especiales, especificar “UTF-8” o “latin1” puede prevenir problemas de símbolos raros.

Ejemplo con un archivo .csv

# Leer un archivo CSV
datos_csv <- read.csv("input/datos censo colombia.csv", 
                      header = TRUE,   # Primera fila contiene nombres de columnas
                      sep = ",")       # Separador de columnas

2.3 Leer-escribir conjuntos de datos con rio

2.3.1 Librería rio

Después de aprender a cargar datos desde el menú de Rstudio, y utilizando las funciones base, es momento de conocer una herramienta que simplifica y unifica este proceso: el paquete rio. Este paquete se ha diseñado bajo la filosofía de importar y exportar datos con una sola función, evitando que tengas que memorizar múltiples funciones distintas según el tipo de archivo.

File_type Importar Exportar
.csv import() export()
.txt import() export()
.xls, .xlsx import() export()
.dta import() export()
rds import() export()

Esta función utiliza los mismos argumentos para diferentes formatos.

  • file = “” Dirección de directorio

  • sep = Separador de columnas (en .csv y .txt)

  • skip = Desde cuál fila comenzar a leer la base de datos

  • sheet = Cuál hoja leer

  • header = Nombres de las columnas en primera fila (TRUE O FALSE)

  • skipNul = T/F Se debe aceptar los no elementos.

2.3.2 Importar

  • Detecta automáticamente el formato a partir de la extensión del archivo.
  • Si no hay extensión o no coincide, se puede indicar manualmente con format.
  • Acepta rutas locales, URLs y archivos comprimidos (.zip, .tar).
  • Lee múltiples hojas de Excel, tablas HTML o varios archivos dentro de un ZIP usando import_list().

Leer desde un formato .csv:

data_csv = import(file="input/datos censo colombia.csv" , skip=6 , encoding="UTF-8") 
# - skip = 6  → omite las primeras 6 filas del archivo (útil cuando hay encabezados o notas previas a los datos)
# - encoding = "UTF-8" → asegura que los caracteres especiales (acentos, ñ, etc.) se lean correctamente
##   codigo_divipola   departamento poblacion_en_hogares poblacion_en_lea
## 1              00 Total Nacional             43835324           329093
## 2              05      Antioquia              5931492            43296
## 3              08      Atlántico              2336434             5831
## 4              11   Bogotá, D.C.              7149540            31929
## 5              13        Bolívar              1903456             6004

Leer desde un formato .xlsx:

data_xls = import(file="input/hurto a personas.xlsx" , skip=9) 
##       MUNICIPIO     MES    GENERO CANTIDAD
## 1 MEDELLÍN (CT)   ENERO  FEMENINO      173
## 2 MEDELLÍN (CT)   ENERO  FEMENINO        1
## 3 MEDELLÍN (CT)   ENERO MASCULINO        8
## 4 MEDELLÍN (CT)   ENERO MASCULINO      312
## 5 MEDELLÍN (CT) FEBRERO  FEMENINO        8

Leer desde una url en internet:

Puede cargar datos directamente de internet, lo que es útil para fuentes públicas o APIs.

data_url = import(file="https://www.datos.gov.co/resource/8dar-v8rj.json")

2.3.3 Exportar

  • El formato se detecta por la extensión en el argumento file.

  • Permite exportar data frames a CSV, Excel, JSON, YAML, RDS, RData, QS, HTML, XML, DBF, ARFF, FWF, entre otros.

  • Puede exportar listas de data frames a múltiples archivos u hojas con export_list().

2.3.3.1 Exportar a un formato .csv

export(x=data_url, file="output/datos censo magdalena.csv")

2.3.3.2 Exportar a un formato .xlsx

export(x=data_url , file="output/datos censo magdalena.xlsx")

2.3.3.3 Indicar el formato en que se debe de exportar .rds, .xlsx, …

export(x=data_url , file="output/datos censo magdalena.rds")

2.3.4 Convertir

convert() es la combinación de las funciones import() y export(), ya que permite cambiar la extensión de un archivo sin la necesidad de crear un objeto en R

convertir .csv -> .xlsx:

convert(in_file = "input/datos censo colombia.csv" , out_file="output/datos censo colombia.xlsx")

convertir .xlsx -> .rds:

convert(in_file="input/poblacion dane.xlsx" , out_file="output/poblacion dane.rds")

2.3.5 ¿Qué formato usar?**

Imagine que tiene un data frame enorme, con cientos de filas, factores, fechas y columnas numéricas. Guardarlo en .csv es como pasarlo a una hoja de cálculo de texto:

  • Pierde parte de la “memoria” de R sobre qué columnas eran fechas, factores, etc.

  • Puede ser lento de escribir y de leer de nuevo.

  • El archivo ocupa más espacio en disco porque todo está en texto.

Ahora bien, .rds es como un archivo “de casa” para R:

  • Guarda el objeto exactamente como está en la memoria, sin convertirlo a texto.

  • Al leerlo con readRDS() o con import(), R lo recupera idéntico: tipos de datos, atributos, nombres de columnas, etc.

  • Es mucho más rápido y suele ocupar bastante menos espacio que un CSV.

💡 .rds es hasta 16 veces más eficiente que el formato .csv. (Más discusión aquí)

3 Práctica

1. Creación de un proyecto en RStudio

  • Cree un nuevo proyecto llamado “practica_datos” en una carpeta vacía.

  • Guarde un script llamado ejercicio_import.R dentro de ese proyecto.

  • Abra el proyecto y confirme que el directorio de trabajo corresponde a la carpeta del proyecto.

2. Importar datos usando funciones base

  • Visite la siguiente Base de datos descargue y guarde el archivo en formato .csv

  • Carguelo usando read.csv() especificando header = TRUE y el separador correcto.

  • Muestra las primeras 6 filas del data frame.

3. Importar datos con rio

  • Ahora importe la base del ejercicio anterior, utilizando la libreria rio.

  • Obtenga los nombres de las columnas y muestre las dimensiones del DataFrame.

  • Obtenga el elemento de la fila 7 y la columna 3.

4 Referencias

  • Colin Gillespie and Robin Lovelace, 2017. Efficient R Programming, A Practical Guide to Smarter Programming [Ver aquí]

    • Cap. 4: Efficient Workflow
    • Cap. 5: Efficient input/output