En esta nueva entrega aprenderemos a importar datos a R desde otras fuentes. Habitualmente no introduciremos manualmente los datos; emplearemos las posibilidades de lectura que nos ofrece R. En este capítulo leeremos ficheros de texto y ficheros Access; para ello necesitaremos el paquete de R RODBC.

Para leer un fichero de texto emplearemos un fichero de ejemplo GRADES.TXT, que es un fichero de texto delimitado por espacios y sin cabeceras; tiene los siguientes campos:

  • ID del estudiante
  • género
  • clase
  • puntuación de test
  • puntuación del examen 1
  • puntuación del examen 2
  • puntuación de laboratorio
  • puntuación del examen final

Descárgatelo aquí y guárdalo en C:\WINDOWS\temp para seguir el ejemplo. La función que se emplea en R para leer tablas desde ficheros de texto es read.table:

archivo <- read.table(file = "c:\\WINDOWS\\temp\\GRADES.TXT", header = FALSE) # leemos el archivo
archivo
#    V1 V2 V3 V4 V5 V6 V7  V8
# 1 air  f  4 50 93 93 98 162
# 2 aln  m  4 49 95 98 97 175
# 3 bam  m  4 39 63 84 95  95 ...

Vemos que la sintaxis de la función read.table es bastante sencilla. Recomiendo estudiar la documentación que tiene R al respecto de esta función. El argumento principal de esta función será file = <ubicación y nombre del fichero>; además, con header indicamos si es necesario leer cabeceras; por defecto read.table lo tiene a FALSE. Para introducir las cabeceras al fichero empleamos vectores:

archivo <- read.table(file = "c:\\WINDOWS\\temp\\GRADES.TXT") # leemos el archivo
nombres <- c("ID", "sexo", "clase", "test", "exam1", "exam2", "labo", "final") # creamos un vector de nombres
names(archivo) <- nombres # nombramos las variables
archivo
#    ID sexo clase test exam1 exam2 labo final
# 1 air    f     4   50    93    93   98   162
# 2 aln    m     4   49    95    98   97   175
# 3 bam    m     4   39    63    84   95    95
# 4 bag    f     3   46    92    96   88   150...

Empleamos la función names para dar nombres a las variables del data.frame archivo a partir de un vector que contiene dichos nombres.

Otra fuente de datos muy habitual puede ser Access. Para leer bases de datos necesitaremos tener instalado el paquete RODBC. En el capítulo anterior se indicó cómo descargar e instalar este módulo de R. Para este ejemplo partimos de una BBDD Access bd1.mdb almacenada en C:/WINDOWS/temp que contiene la siguiente tabla:

POBLACIONRECLAMTAM_COCHEGRUPO_EDAD
50042small1
120037medium1
1001large1
400101small2
50073medium2
30014large2

Podéis crear la BBDD en la ubicación C:/WINDOWS/temp, copiar y pegar el ejemplo para estudiar cómo funciona el código. Comencemos a analizar las sentencias en R:

setwd("c:/windows/temp") # Especificamos el directorio de trabajo.
library(RODBC)           # Cargamos los paquetes.
bd <- odbcConnectAccess("bd1.mdb")
bd # Analizamos la conexión ODBC
# RODB Connection 1
# Details:
#   case=nochange
#   DBQ=c:\\windows\\temp\\bd1.mdb
#   Driver={Microsoft Access Driver (*.mdb)}
#   DriverId=25
#   FIL=MS Access
#   MaxBufferSize=2048
#   PageTimeout=5
#   UID=admin

Primero necesitamos especificar el directorio de trabajo con la función setwd. Después cargamos el módulo RODBC con la función library; recordemos que podemos cargarlo vía menú. Por último, creamos la conexión con la función específica de RODBC odbcConnectAccess y comprobamos que la conexión funciona correctamente. Ahora estamos en disposición de realizar consultas sobre las tablas de la BBDD conectada:

datos <- sqlQuery(bd, "SELECT * FROM tabla2") # Realizamos una consulta sobre la tabla2
datos
#   POBLACION RECLAM TAM_COCHE GRUPO_EDAD
# 1       500     42     small          1
# 2      1200     37    medium          1
# 3       100      1     large          1
# 4       400    101     small          2
# 5       500     73    medium          2
# 6       300     14     large          2

Las consultas se realizan con la función específica sqlQuery, donde introduciremos la BBDD conectada y la consulta en SQL estándar entre comillas. Con esta sentencia hemos creado un objeto de R que contiene una tabla de Access. Ya tenemos conectado R con dos de los orígenes de datos más habituales. En sucesivas entregas leeremos datos con R de SAS y SPSS.