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.
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).
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.
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 usarfile.choose()
para que se abra un ventana y adjuntar el archivo deseado manualmente.header
: valor lógico, se usaTRUE
si la primera línea de la base de datos tiene los nombres de las variables, caso contrario se usaFALSE
.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.
<- read.table(file='C:/Users/mi_usuario/Desktop/base1.csv',
datos 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.
<- read.table(file.choose(), header=TRUE, sep=',')
datos datos
Para bloc de notas con barra espaciadora
Para leer el archivo de Excel llamado base2.txt
podemos usar el siguiente código.
<- read.table(file='C:/Users/mi_usuario/Desktop/base2.txt',
datos 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.
<- read.table(file='C:/Users/mi_usuario/Desktop/base3.txt',
datos header=TRUE, sep='\t')
datos
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.
\
, 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.
<- 'https://raw.githubusercontent.com/fhernanb/datos/master/aptos2015'
enlace <- read.table(file=enlace, header=TRUE) datos
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)
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.
<- read_excel(file.choose(), sheet='Hijos')
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.
<- read_excel('BD_Excel.xlsx', sheet='Padres')
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.
- 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.
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 |
- 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.