Por supuesto, no nos vamos a limitar a trabajar con datos de ejemplo provistos por R: queremos utilizar también nuestras propias tablas. En R hay decenas de maneras de importar datos tabulares desde distintas fuentes (Excel, bases de datos, SPSS, etc.) pero la más habitual consiste en leer ficheros de texto con la función read.table.
Existen muchas variantes de ficheros de texto: csv, ficheros separados con tabulador, con y sin encabezamientos, con distintos códigos para representar los nulos, etc. La función read.table es muy flexible y tiene muchos parámetros, casi demasiados, para adaptarse a la mayor parte de ellos10.
Antes de comenzar a utilizarla, sin embargo, es necesaria una digresión acerca de directorios y directorios de trabajo. El directorio de trabajo es aquel en el que R busca y escribe ficheros por defecto. Las funciones getwd y setwd permiten, respectivamente, averiguar cuál es y cambiarlo si procede. De todos modos, la mejor manera de especificar el directorio de trabajo en RStudio es usando los menús: Files > More > Set as working directory.
getwd()
setwd(“..”) # “sube” al directorio padre del actual
setwd(“mi_proyecto/src”) # ruta relativa setwd(“c:/users/yo/proyecto”) #
ruta absoluta en Windows setwd(“/home/yo/proyecto”) # ruta absoluta en
Linux y otros dir() # contenidos del directorio “de trabajo” Una llamada
típica a read.table para leer un fichero es así:
datos <- read.table(“data_dir/mi_fichero.csv”, sep = “, header = TRUE) Examinénmosla:
datos es el nombre de la tabla que recibirá la información leída por read.table; de no hacerse la asignación, R se limitará a imprimirlos en la consola. “data_dir/mi_fichero.csv” (¡entrecomillado!) es la ruta del fichero de interés. Se trata de una ruta relativa al directorio de trabajo, que se supone que contiene el subdirectorio data_dir y, dentro de él, el fichero mi_fichero.csv. sep = “ indica que los campos del fichero están separados por tabuladores (sí, el tabulador es . Muchos ficheros tienen campos separados por, además del tabulador, caracteres tales como ,, ;, | u otros. Es necesario indicárselo a R y la manera de averiguar qué separador usa un fichero, si es que no se sabe, es abriéndolo previamente con un editor de texto decente11. header = TRUE indica que la primera fila del fichero contiene los nombres de las columnas. Si olvidas especificarlo y la primera fila del fichero contiene efectivamente el nombre de las columnas, R interpretará estas, erróneamente, como datos. Con una expresión similar a esa, tal vez cambiando el separador, se leen la mayoría de los ficheros de texto habituales. Otras opciones de las muchas que tiene read.table que pueden ser útiles en determinadas ocasiones son:
dec, para indicar el separador de decimales. Por defecto es ., pero en ocasiones hay que cambiarlo a dec = “,” para que interprete correctamente, p.e., el antiguo estándar español (p.e., 67,56 en lugar de 67.56). quote, que indica qué caracter se usa para acotar campos de texto. En algunas ocasiones aparecen campos de texto que contienen apóstrofes (p.e., calle O’Donnell) y la carga de datos puede fracasar de no indicarse quote = ““. Esta expresión desactiva el papel especial de acotación de campos de texto que por defecto tienen las comillas.getwd()
setwd("F:/descargas")
datos<-read.table(file="paro.csv", header = T)
datos
head(datos)
tail(datos)
nrow(datos)
summary(datos)
###Repite el ejercicio anterior eliminando la opción header = TRUE. Examina el resultado y comprueba que, efectivamente, los datos no se han cargado correctamente.
datos1<-read.table(file="paro.csv")
datos1
head(datos1)
tail(datos1)
nrow(datos1)
summary(datos1)
martchs <- read.csv("F:/descargas/england-premier-league-matches-2018-to-2019-stats.csv", header = T,sep = ";")
martchs
# Para visualizar los primeros datos
head(martchs)
# Para visualizar los ultimos datos
tail(martchs)
# Para visualizar el numero de filas
nrow(martchs)
summary(martchs)
datos2 <- read.table("https://datanalytics.com/uploads/datos_treemap.txt", header = T)
datos2
## valor cap div
## 1 ABE 7793 12.04
## 2 ABG 1473 1.23
## 3 ACS 7930 8.13
## 4 ACX 2217 5.06
## 5 AMS 5910 2.27
## 6 ANA 3760 5.24
## 7 BBVA 24819 8.34
## 8 BKT 1646 5.85
## 9 BME 1589 10.38
## 10 CABK 11644 6.48
## 11 ELE 17215 3.08
## 12 ENG 3092 6.47
## 13 EVA 1971 6.70
## 14 FCC 2026 8.99
## 15 FER 5780 5.33
## 16 GAM 838 0.20
## 17 GAS 11022 7.24
## 18 GRF 2978 NA
## 19 IBE 25989 7.51
## 20 ICAG 3193 NA
## 21 IDR 1904 5.86
## 22 ITX 36571 2.39
## 23 MAP 6446 7.17
## 24 MTS 20577 1.82
## 25 OHL 1721 2.84
## 26 POP 4392 5.58
## 27 REE 4239 5.98
## 28 REP 22885 5.60
## 29 SAB 3433 5.67
## 30 SAN 44430 11.38
## 31 SYV 1823 2.32
## 32 TEF 57917 11.03
## 33 TL5 1652 8.62
## 34 TRE 1336 5.61
#Se asignará a una variable el link del fichero, luego se hará uso de la función download.file
download.file(url = "https://datanalytics.com/uploads/datos_treemap.txt",
destfile = "Datos")
#Para leer el fichero ya descargado se hará uso de la función read.table.
read.table("Datos")
## V1 V2 V3
## 1 valor cap div
## 2 ABE 7793 12.04
## 3 ABG 1473 1.23
## 4 ACS 7930 8.13
## 5 ACX 2217 5.06
## 6 AMS 5910 2.27
## 7 ANA 3760 5.24
## 8 BBVA 24819 8.34
## 9 BKT 1646 5.85
## 10 BME 1589 10.38
## 11 CABK 11644 6.48
## 12 ELE 17215 3.08
## 13 ENG 3092 6.47
## 14 EVA 1971 6.7
## 15 FCC 2026 8.99
## 16 FER 5780 5.33
## 17 GAM 838 0.2
## 18 GAS 11022 7.24
## 19 GRF 2978 <NA>
## 20 IBE 25989 7.51
## 21 ICAG 3193 <NA>
## 22 IDR 1904 5.86
## 23 ITX 36571 2.39
## 24 MAP 6446 7.17
## 25 MTS 20577 1.82
## 26 OHL 1721 2.84
## 27 POP 4392 5.58
## 28 REE 4239 5.98
## 29 REP 22885 5.6
## 30 SAB 3433 5.67
## 31 SAN 44430 11.38
## 32 SYV 1823 2.32
## 33 TEF 57917 11.03
## 34 TL5 1652 8.62
## 35 TRE 1336 5.61