8 Lectura de bases de datos

En este capítulo se mostrará cómo leer una base de datos externa hacia R.

8.1 ¿Qué es una base de datos?

Una base de datos es un arreglo ordenado de variables numéricas, lógicas y cualitativas.

En la siguiente figura se ilustran los elementos de una base de datos.

8.2 ¿En qué formato almacenar una base de datos?

Usualmente los archivos con la información para ser leídos por R se pueden almacenar en formato:

  • plano con extensión .txt o,
  • Excel con extensión .csv.

En las secciones siguientes se mostrará cómo almacenar datos en los dos formatos para ser leídos en R. En el Cuadro 8.1 se presenta una base de datos pequeña, tres observaciones y tres variables, que nos servirá como ejemplo para mostrar cómo se debe almacenar la información.

Table 8.1: Ejemplo de una base de datos simple.
Edad Fuma Pais
35 TRUE Colombia
46 TRUE Francia
23 FALSE Malta

8.2.1 Almacenamiento de información en Excel

Para almacenar la información del Cuadro 8.1 en Excel, abrimos un archivo nuevo archivo de Excel y copiamos la información tal como se muestra en la figura de abajo. Se debe iniciar en la parte superior izquierda, no se deben dejar filas vacías, no se debe colorear, no se deben colocar bordes ni nada, se ingresa la información sin embellecer el contenido. Por último se guarda el archivo en la carpeta deseada y al momento de nombrar el archivo se debe modificar la opción tipo de archivo a csv (delimitado por comas).

Recuerde que el archivo de Excel se debe guardar con extensión .csv.

8.2.2 Almacenamiento de información en bloc de notas

Para almacenar la información del Cuadro 8.1 en un bloc de notas abrimos un archivo nuevo de bloc de notas y copiamos la información tal como se muestra en la figura de abajo. Se copian los nombres de las variables o los datos separados por un espacio obtenido con la tecla tabuladora, cada línea se finaliza con un enter. Para guardar el archivo se recomienda que el cursor quede al inicio de una línea vacía. En la figura de abajo se señala la posición del cursor con la flecha roja, a pesar de que no éxiste línea número 5, el curso debe quedar al inicio de esa línea número 5.

Es posible mejorar la apariencia de la información almacenada en el bloc de notas si, en lugar de usar espacios con la barra espaciadora, se colocan los espacios con la barra tabuladora, así la información se ve más organizada y se puede chequear fácilmente la información ingresada. En la siguiente figura se muestra la información para el ejemplo, claramente se nota la organización de la información.

Una buena práctica es usar la barra tabuladora para separar, eso permite que la información se vea ordenada.

8.3 Función read.table

La función read.table se puede usar para leer bases de datos hacia R. La estructura de la función con los parámetros más comunes de uso es la siguiente.

read.table(file, header, sep, dec)

Los argumentos de la función read.table son:

  • file: nombre o ruta donde están alojados los datos. Puede ser un url o una dirección del computador. Es también posible usar file.choose() para que se abra un ventana y adjuntar el archivo deseado manualmente.
  • header: valor lógico, se usa TRUE si la primera línea de la base de datos tiene los nombres de las variables, caso contrario se usa FALSE.
  • sep: tipo de separación interna para los datos dentro del archivo. Los valores usuales para este parámetros son:
    • sep=',' si el archivo tiene extensión .csv.
    • sep='' si el archivo es bloc de notas con espacios por la barra espaciadora.
    • sep='\t' si el archivo es bloc de notas con espacios por la barra tabuladora.
  • dec: símbolo con el cual están indicados los decimales.

Ejemplo

Crear la base de datos del Cuadro 8.1 en Excel y bloc de notas para practicar la lectura de base de datos desde R.

Solución

Lo primero que se debe hacer para realizar lo solicitado es construir tres archivos (uno de Excel y dos bloc de notas) igual a los mostrados en las figuras anteriores. Vamos a suponer que los nombres para cada uno de ellos son base1.csv, base2.txt y base3.txt respectivamente.

Para Excel

Para leer el archivo de Excel llamado base1.csv podemos usar el siguiente código.

datos <- read.table(file='C:/Users/mi_usuario/Desktop/base1.csv',
                    header=TRUE, sep=',')
datos

La dirección file='C:/Users/mi_usuario/Desktop/base1.csv' le indica a R en qué lugar del computador debe buscar el archivo, note que se debe usar el símbolo / para que sea un dirección válida. Substituya la dirección del código anterior con la dirección donde se encuentra su archivo para que pueda leer la base de datos.

Si no se conoce la ubicación del archivo a leer o si la dirección es muy extensa, se puede usar file.choose() para que se abra una ventana y así adjuntar manualmente el archivo. A continuación se muestra el código para hacerlo de esta manera.

datos <- read.table(file.choose(), header=TRUE, sep=',')
datos

Para bloc de notas con barra espaciadora

Para leer el archivo de Excel llamado base2.txt podemos usar el siguiente código.

datos <- read.table(file='C:/Users/mi_usuario/Desktop/base2.txt',
                    header=TRUE, sep='')
datos

Para bloc de notas con barra tabuladora

Para leer el archivo de Excel llamado base3.txt podemos usar el siguiente código.

datos <- read.table(file='C:/Users/mi_usuario/Desktop/base3.txt',
                    header=TRUE, sep='\t')
datos
El usuario puede usar indiferentemente file='C:/Users/bla/bla' o file.choose() para ingresar el archivo, con la práctica se aprende a decidir cuando conviene una u otra forma.
Un error frecuente es escribir la dirección o ubicación del archivo usando \, lo correcto es usar /.

Ejemplo

Leer la base de datos sobre apartamentos usados en la ciudad de Medellín que está disponible en la página web cuya url es: https://raw.githubusercontent.com/fhernanb/datos/master/aptos2015

Solución

Para leer la base de datos desde una url usamos el siguiente código.

enlace <- 'https://raw.githubusercontent.com/fhernanb/datos/master/aptos2015'
datos <- read.table(file=enlace, header=TRUE)

La base de datos ingresada queda en el marco de datos llamado datos y ya está disponible para usarla.

8.4 Lectura de bases de datos en Excel

Algunas veces los datos están disponibles en un archivo estándar de Excel, y dentro de cada archivo hojas con la información a utilizar. En estos casos se recomienda usar el paquete readxl (Wickham and Bryan 2019) y en particular la función readxl. A continuación un ejemplo de cómo proceder en estos casos.

Ejemplo

En este enlace está disponible un archivo de Excel llamado BD_Excel.xlxs, una vez se ha abierto la página donde está alojado el archivo, se debe descargar y guardar en alguna carpeta. El archivo contiene dos bases de datos muy pequeñas, en la primera hoja llamada Hijos está la información de un grupo de niños y en la segunda hoja llamada Padres está la información de los padres. ¿Cómo se pueden leer las dos bases de datos?

Solución

Lo primero que se debe hacer es instalar el paquete readxl, la instalación de cualquier paquete en un computador se hace una sola vez y éste quedará instalado para ser usado las veces que se requiera. La función para instalar un paquete cualquiera es install.packages, a continuación se muestra el código necesario para instalar el paquete readxl.

install.packages("readxl")

Una vez instalado el paquete es necesario cargarlo, la función para cargar el paquete en la sesión actual de R es library. La instrucción para cargar el paquete es la siguiente:

library(readxl)
La instalación de un paquete con install.packages se hace sólo una vez y no más. Cargar el paquete con library en la sesión actual se debe hacer siempre que se vaya a usar el paquete.

Luego de haber cargado el paquete readxl se puede usar la función read_xl para leer la información contenida en las hojas. A continuación el código para crear la base de datos hijos contenida en el archivo BD_Excel.xlsx.

hijos <- read_excel(file.choose(), sheet='Hijos')
as.data.frame(hijos)  # Para ver el contenido
##   Edad Grado    ComicFav
## 1    8     2    Superman
## 2    6     1      Batman
## 3    9     3      Batman
## 4   10     5 Bob Esponja
## 5    8     4      Batman
## 6    9     4 Bob Esponja

A continuación el código para crear la base de datos padres contenida en el archivo BD_Excel.xlsx.

padres <- read_excel('BD_Excel.xlsx', sheet='Padres')
as.data.frame(padres)  # Para ver el contenido
##   Edad   EstCivil NumHijos
## 1   45    Soltero        1
## 2   50     Casado        0
## 3   35     Casado        3
## 4   65 Divorciado        1

La función read_excel tiene otros parámetros adicionales útiles para leer bases de datos, se recomienda consultar la ayuda de la función escribiendo en la consola help(read_excel).

EJERCICIOS

Realice los siguiente ejercicios propuestos.

  1. En el Cuadro 8.2 se presenta una base de datos sencilla. Almacene la información del cuadro en dos archivos diferentes, en Excel y en bloc de notas. Lea los dos archivos con la función read.table y compare los resultados obtenidos con la del Cuadro 8.2 fuente.
Table 8.2: Base de datos para practicar lectura.
Fuma Pasatiempo Num_hermanos Mesada
Si Lectura 0 4500
Si NA 2 2600
No Correr 4 1000
No Correr NA 3990
Si TV 3 2570
No TV 1 2371
Si Correr 1 1389
NA Correr 0 4589
Si Lectura 2 NA
  1. En la url https://raw.githubusercontent.com/fhernanb/datos/master/medidas_cuerpo están disponibles los datos sobre medidas corporales para un grupo de estudiante de la universidad, use la función read.table para leer la base de datos.