Manual. Curso introducción de R. Capítulo 5: Lectura avanzada de datos

10 Mar

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 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:

Variable
ID del estudiante
genero
clase
puntuación de test
puntuación del examen 1
puntuación del examen 2
puntuación de laboratorio
puntuación del examen final

Descargateló aquí y guardaló 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 tiene 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ó como descargar e intalar este módulo de R. Para este ejemplo partimos de una BBDD Access bd1 almacenada en C:/WINDOWS/temp que contiene la siguiente tabla:

POBLACION

RECLAM

TAM_COCHE

GRUPO_EDAD

500

42

small

1

1200

37

medium

1

100

1

large

1

400

101

small

2

500

73

medium

2

300

14

large

2

Podéis crear la BBDD en la ubicación C:/WINDOWS/temp  copiar y pegar el ejemplo para estudiar como 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.

8 respuestas a «Manual. Curso introducción de R. Capítulo 5: Lectura avanzada de datos»

  1. Hola,
    me gustaría saber si existe alguna forma para meter en una única variable el nombre de todos los ficheros de una extensión “txt” en una carpeta
    Gracias.
    Un saludo

  2. Buenos días
    Cómopuedo leer desde R un fichero plano de ancho fijo y sin nombre de variables en la primera fila
    Muchas gracias

  3. Buenos días
    Me gustaría saber cómo puedo leer desde R un fichero plano(txt) de ancho fijo que además no contiene nombre de variables.
    Muchas gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *