0Pricing
R Academy · Lección

Lectura de archivos CSV con read_csv()

Importe archivos delimitados con opciones de inferencia de tipos de columna, omisión y codificación.

Lectura de archivos CSV con read_csv() es una lección gratuita de R Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de R Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de R Academy incluye 4 lecciones en total.

¿Por qué usar readr en lugar de Base R?

Base R incluye read.csv(), pero la función read_csv() del paquete readr es más rápida, devuelve un tibble (no un data frame), ofrece una inferencia de tipos predeterminada más precisa y muestra mensajes informativos sobre los tipos de columna detectados.

library(readr)

# read_csv() vs read.csv():
# 1. Returns a tibble (prints nicely, faster subsetting)
# 2. Does NOT convert strings to factors by default
# 3. Shows column specification message
# 4. Faster for large files

# Example with a simple inline CSV:
df <- read_csv('name,score,grade
Alice,85,B
Bob,92,A
Carol,78,C')

print(df)
print(class(df))

read_csv() a partir de una ruta de archivo

El uso más habitual consiste en pasar una cadena con la ruta de un archivo a read_csv(). La función detecta automáticamente la coma como delimitador, interpreta la primera fila como encabezados e infiere los tipos de columna a partir de las primeras 1000 filas.

library(readr)

# Reading from a file path (illustrative — file not present)
# df <- read_csv('data/sales_2024.csv')

# Reading from a URL also works:
# df <- read_csv('https://example.com/data.csv')

# Using a literal inline string for demonstration:
df <- read_csv('region,q1,q2,q3
East,100,120,115
West,200,195,210
North,80,85,90')

print(df)

col_types — Especificar los tipos de columna

Use col_types para reemplazar la inferencia de tipos de readr. Pase una cadena compacta (un carácter por columna: c=character, d=double, i=integer, l=logical, D=date, _=skip) o una especificación cols().

library(readr)

df <- read_csv('id,date,amount,active
1,2024-01-15,99.99,TRUE
2,2024-02-20,149.50,FALSE
3,2024-03-10,75.00,TRUE',
# Compact: integer, Date, double, logical
col_types = 'iDdl')

print(df)
cat('\nColumn types:\n')
print(sapply(df, class))

cols() para especificar tipos explícitamente

Para tener más control, use cols() para indicar el tipo de cada columna. Utilice las funciones collector: col_double(), col_character(), col_integer(), col_date(format=), col_skip() y col_guess().

library(readr)

df <- read_csv('id,name,score,date
1,Alice,85.5,2024-01-15
2,Bob,92.0,2024-02-20
3,Carol,78.3,2024-03-10',
col_types = cols(
  id = col_integer(),
  name = col_character(),
  score = col_double(),
  date = col_date(format = '%Y-%m-%d')
))

print(df)
print(class(df$date))

Argumentos skip y n_max

skip=n omite las primeras n líneas antes de leer (es útil para metadatos o encabezados de comentarios). n_max=n lee como máximo n filas de datos: es perfecto para previsualizar archivos grandes o cargar solo el primer bloque.

library(readr)

# File with metadata in first 2 lines
# (simulated with literal string)
df <- read_csv('# Generated 2024-01-15
# Source: internal DB
name,score,grade
Alice,85,B
Bob,92,A
Carol,78,C
Dave,88,B',
skip = 2,     # Skip the 2 comment lines
n_max = 3     # Read only 3 data rows
)

print(df)

Argumento na — Definir valores ausentes

De forma predeterminada, read_csv() trata las cadenas vacías y NA como valores ausentes. Use el argumento na para especificar cadenas adicionales que deben leerse como NA. Algunos ejemplos habituales son: 'N/A', 'NULL', '-999' y '.'.

library(readr)

df <- read_csv('name,score,city
Alice,85,NYC
Bob,N/A,NULL
Carol,78,.
Dave,-999,Chicago',
na = c('', 'NA', 'N/A', 'NULL', '.', '-999')
)

print(df)
cat('NAs per column:\n')
print(colSums(is.na(df)))

col_names — Nombres de columna personalizados

Establezca col_names = FALSE cuando el archivo no tenga una fila de encabezado; readr asignará automáticamente a las columnas los nombres X1, X2, etc. Como alternativa, pase un vector de caracteres a col_names para especificar nombres personalizados y omitir la fila de encabezado.

library(readr)

# File without headers
df <- read_csv('Alice,85,NYC
Bob,92,LA
Carol,78,Chicago',
col_names = c('name','score','city')
)

print(df)

# auto-names when no header:
df2 <- read_csv('1,2,3
4,5,6', col_names = FALSE)
print(df2)

locale() — Gestionar formatos no estándar

locale() controla cómo interpreta readr los formatos específicos de una configuración regional: separadores decimales (',' en los datos europeos), formatos de fecha, codificación y separadores de miles. Páselo a read_csv(locale=...).

library(readr)

# European-style CSV: semicolons as delimiters, comma as decimal
# read_csv2() is shorthand for this locale
df <- read_csv2('name;price;qty
Alice;9,99;100
Bob;24,50;50',
locale = locale(decimal_mark=',')
)

print(df)

# For dates in non-ISO format:
parse_date('15/01/2024', format='%d/%m/%Y')

progress y show_col_types

Para archivos grandes, read_csv() muestra una barra de progreso. Establezca progress=FALSE para ocultarla (es útil en scripts). show_col_types=FALSE silencia el mensaje sobre los tipos de columna cuando ya los ha verificado.

library(readr)

# Suppress progress and type messages for production scripts
df <- read_csv(
  'a,b,c
  1,x,TRUE
  2,y,FALSE',
  show_col_types = FALSE,
  progress = FALSE
)

print(df)

Problems() — Diagnosticar errores de análisis

Cuando readr encuentra valores que no coinciden con el tipo esperado, los sustituye por NA y registra una advertencia. Llame a problems(df) para inspeccionar exactamente qué filas y columnas presentaron problemas y cuáles eran sus valores originales.

library(readr)

# Intentional type mismatch: 'N/A' in numeric column
df <- suppressWarnings(read_csv(
  'id,score
  1,85
  2,N/A
  3,92',
  col_types = cols(score = col_double())
))

print(df)
print(problems(df))

Leer varios archivos con map()

Combine readr con purrr::map() para leer y combinar por filas varios archivos CSV en un solo paso. Este patrón es esencial para procesar datos mensuales o trimestrales almacenados en archivos separados.

library(readr)
library(purrr)
library(dplyr)

# Simulated: read and bind multiple CSV files
files <- c('q1.csv', 'q2.csv', 'q3.csv')

# In practice:
# all_data <- map_df(files, read_csv, show_col_types=FALSE)

# Demonstration with inline data:
q1 <- read_csv('month,sales\nJan,100\nFeb,120', show_col_types=FALSE)
q2 <- read_csv('month,sales\nApr,130\nMay,145', show_col_types=FALSE)

bind_rows(list(q1=q1, q2=q2), .id='quarter')

Comprobación rápida

¿Cómo indica a read_csv() que los valores 'N/A' y '-99' deben tratarse como ausentes (NA)?

Resumen: read_csv() con readr

Ideas clave para leer archivos CSV con readr:

  • read_csv('file.csv') — lee un CSV, devuelve un tibble e infiere los tipos de columna
  • col_types = 'idcl' o cols(x=col_double()) — especificación explícita de tipos
  • skip=n — omite filas de encabezado o metadatos; n_max=n — limita las filas leídas
  • na = c('N/A','NULL') — trata cadenas adicionales como NA
  • locale(decimal_mark=',') — gestiona formatos numéricos europeos
  • show_col_types=FALSE — oculta la información de tipos en los scripts
  • problems(df) — inspecciona los errores de análisis
  • Combine con map_df(files, read_csv) para trabajar con varios archivos
library(readr)

# Production-ready read_csv() call
df <- read_csv(
  'name,score,city,active
  Alice,85,NYC,TRUE
  Bob,N/A,LA,FALSE
  Carol,78,NULL,TRUE',
  col_types = cols(
    name = col_character(),
    score = col_double(),
    city = col_character(),
    active = col_logical()
  ),
  na = c('', 'NA', 'N/A', 'NULL'),
  show_col_types = FALSE
)

print(df)

Preguntas frecuentes

¿La lección «Lectura de archivos CSV con read_csv()» es gratis?

Sí — el texto completo de «Lectura de archivos CSV con read_csv()» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de R Academy, actualiza a CoddyKit PRO. El curso de R Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Lectura de archivos CSV con read_csv()»?

Importe archivos delimitados con opciones de inferencia de tipos de columna, omisión y codificación. Practicas R Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar R Academy?

No se requiere experiencia previa. R Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Lectura de archivos CSV con read_csv()»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de R Academy?

Sí. Cada lección de R Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Lectura de archivos CSV con read_csv()
  2. Análisis de archivos TSV y de ancho fijo
  3. Importación de archivos de Excel con readxl
  4. Escritura de datos en varios formatos
← Volver a R Academy