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.
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:
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:
Realizar los siguientes ejercicios:
Lee el fichero paro.csv (ARCHIVO ADJUNTO) usando la función read.table. Comprueba que está correctamente importado usando head, tail, nrow, summary, etc. Para leer la tabla necesitarás leer con cierto detenimiento ?read.table.
library(readr)
library(readxl)
getwd()
setwd("C:/Users/Cevallos/OneDrive - Universidad Central del Ecuador/Escritorio")
dir()
paro <- read.table(file = "paro.csv", header = T, sep = "")
paro
## [1] "1_BDD_ENS2018_f1_personas.csv"
## [2] "desktop.ini"
## [3] "Fall Guys.url"
## [4] "hospital.txt"
## [5] "KATY"
## [6] "Microsoft Edge.lnk"
## [7] "Microsoft Teams (work or school).lnk"
## [8] "paro.csv"
## [9] "prueba.html"
## [10] "prueba.Rmd"
## [11] "prueba.tex"
## [12] "Roblox Player.lnk"
## [13] "Roblox Studio.lnk"
## [14] "rsconnect"
## [15] "TALLER-4---GRUPO-6.html"
## [16] "TALLER-5-GRUPO-6.html"
## [17] "TALLER 4 - GRUPO 6.Rmd"
## [18] "TALLER 5 GRUPO 6.Rmd"
head(paro)
tail(paro)
nrow(paro)
paro$Gender <- factor(paro$Gender)
paro$Provinces <- factor(paro$Provinces)
paro$Periodo <- factor(paro$Periodo)
paro$Situation <- factor(paro$Situation)
paro$value <- factor(paro$value)
summary(paro)
head(paro) # Para visualizar los primeros datos de la base.
## Gender Provinces Periodo Situation value
## 1 Males 02 Albacete 2014Q4 active 103.9
## 2 Females 02 Albacete 2014Q4 active 83.5
## 3 Males 03 Alicante/Alacant 2014Q4 active 490.5
## 4 Females 03 Alicante/Alacant 2014Q4 active 398.7
## 5 Males 04 Almería 2014Q4 active 198.5
## 6 Females 04 Almería 2014Q4 active 155.8
tail(paro) # Para visualizar los últimos datos de la base.
## Gender Provinces Periodo Situation value
## 8315 Males 50 Zaragoza 2011Q1 inactive 134.3
## 8316 Females 50 Zaragoza 2011Q1 inactive 199.4
## 8317 Males 51 Ceuta 2011Q1 inactive 10.7
## 8318 Females 51 Ceuta 2011Q1 inactive 16.5
## 8319 Males 52 Melilla 2011Q1 inactive 9.1
## 8320 Females 52 Melilla 2011Q1 inactive 15.3
nrow(paro) # Permite obtener el número de filas.
## [1] 8320
summary(paro) # Estadísticos de las variables.
## Gender Provinces Periodo Situation
## Females:4160 01 Araba/Álava : 160 2011Q1 : 520 active :1664
## Males :4160 02 Albacete : 160 2011Q2 : 520 employed :1664
## 03 Alicante/Alacant: 160 2011Q3 : 520 inactive :1664
## 04 Almería : 160 2011Q4 : 520 never_employed:1664
## 05 Ávila : 160 2012Q1 : 520 unemployed :1664
## 06 Badajoz : 160 2012Q2 : 520
## (Other) :7360 (Other):5200
## value
## 0.9 : 48
## 1.3 : 46
## 0.8 : 44
## 0.7 : 43
## 1.6 : 42
## (Other):8096
## NA's : 1
Repite el ejercicio anterior eliminando la opción header = TRUE. Examina el resultado y comprueba que, efectivamente, los datos no se han cargado correctamente.
library(readr)
library(readxl)
getwd()
setwd("C:/Users/Cevallos/OneDrive - Universidad Central del Ecuador/Escritorio")
dir()
paro <- read.table("C:/Users/Cevallos/OneDrive - Universidad Central del Ecuador/Escritorio/paro.csv", header = F, sep = "")
paro
## [1] "1_BDD_ENS2018_f1_personas.csv"
## [2] "desktop.ini"
## [3] "Fall Guys.url"
## [4] "hospital.txt"
## [5] "KATY"
## [6] "Microsoft Edge.lnk"
## [7] "Microsoft Teams (work or school).lnk"
## [8] "paro.csv"
## [9] "prueba.html"
## [10] "prueba.Rmd"
## [11] "prueba.tex"
## [12] "Roblox Player.lnk"
## [13] "Roblox Studio.lnk"
## [14] "rsconnect"
## [15] "TALLER-4---GRUPO-6.html"
## [16] "TALLER-5-GRUPO-6.html"
## [17] "TALLER 4 - GRUPO 6.Rmd"
## [18] "TALLER 5 GRUPO 6.Rmd"
head(paro)
tail(paro)
nrow(paro)
summary(paro)
head(paro) # Para visualizar los primeros datos de la base.
## V1 V2 V3 V4 V5
## 1 Gender Provinces Periodo Situation value
## 2 Males 02 Albacete 2014Q4 active 103.9
## 3 Females 02 Albacete 2014Q4 active 83.5
## 4 Males 03 Alicante/Alacant 2014Q4 active 490.5
## 5 Females 03 Alicante/Alacant 2014Q4 active 398.7
## 6 Males 04 Almería 2014Q4 active 198.5
tail(paro) # Para visualizar los últimos datos de la base.
## V1 V2 V3 V4 V5
## 8316 Males 50 Zaragoza 2011Q1 inactive 134.3
## 8317 Females 50 Zaragoza 2011Q1 inactive 199.4
## 8318 Males 51 Ceuta 2011Q1 inactive 10.7
## 8319 Females 51 Ceuta 2011Q1 inactive 16.5
## 8320 Males 52 Melilla 2011Q1 inactive 9.1
## 8321 Females 52 Melilla 2011Q1 inactive 15.3
nrow(paro) # Permite obtener el número de filas.
## [1] 8321
summary(paro) # Estadísticos de las variables.
## V1 V2 V3 V4
## Length:8321 Length:8321 Length:8321 Length:8321
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
## V5
## Length:8321
## Class :character
## Mode :character
Nota: La función summary no se puede efectuar correctamente debido a que los datos no se pasaron de manera efectiva.
Lee algún fichero de datos de tu interés y repite el ejercicio anterior (CADA GRUPO USARÁ SU ARCHIVO DE PREFERENCIA Y LO EXPLICARÁ EN LA EXPOSICIÓN).
getwd()
setwd("C:/Users/Cevallos/Downloads")
dir()
discapacidad <- read.table(file = "51594 (1).csv", header = T, sep = "\t", dec = ".")
discapacidad
head(discapacidad)
tail(discapacidad)
nrow(discapacidad)
discapacidad$Sexo <- factor(discapacidad$Sexo)
discapacidad$Grupo.de.discapacidad <- factor(discapacidad$Grupo.de.discapacidad)
discapacidad$Cuidados <- factor(discapacidad$Cuidados)
discapacidad$Total <- factor(discapacidad$Total)
summary(discapacidad)
head(discapacidad) # Para visualizar los primeros datos de la base.
## Sexo Grupo.de.discapacidad
## 1 Total Total
## 2 Total Total
## 3 Total Total
## 4 Total Total
## 5 Total Total
## 6 Total Total
## Cuidados
## 1 Total
## 2 Comer, beber, alimentarse
## 3 Vestirse, desvestirse, abrocharse los zapatos
## 4 Asearse, arreglarse, bañarse, ducharse
## 5 Ir al servicio, cambiar pañales, etc.
## 6 Cambiar de postura, mover o mantener el cuerpo en una determinada posición
## Total
## 1 100,00
## 2 21,30
## 3 49,50
## 4 57,55
## 5 20,63
## 6 19,37
tail(discapacidad) # Para visualizar los últimos datos de la base.
## Sexo Grupo.de.discapacidad
## 346 Mujer Interacciones y relaciones personales
## 347 Mujer Interacciones y relaciones personales
## 348 Mujer Interacciones y relaciones personales
## 349 Mujer Interacciones y relaciones personales
## 350 Mujer Interacciones y relaciones personales
## 351 Mujer Interacciones y relaciones personales
## Cuidados
## 346 Salir a la calle, subir o bajar escaleras, pasear, utilizar transporte público
## 347 Tomar medicación, acudir a consultas médicas, etc.
## 348 Hacer la compra, preparar comidas, etc.
## 349 Llevar a cabo otras tareas domésticas
## 350 Usar el teléfono, ordenador, tablet, redes sociales, etc.
## 351 Otras tareas
## Total
## 346 38,70
## 347 57,42
## 348 50,03
## 349 33,71
## 350 7,90
## 351 7,15
nrow(discapacidad) # Permite obtener el número de filas.
## [1] 351
summary(discapacidad) # Estadísticos de las variables.
## Sexo
## Hombre:117
## Mujer :117
## Total :117
##
##
##
##
## Grupo.de.discapacidad
## Aprendizaje, aplicación del conocimiento y desarrollo de tareas: 39
## Audición : 39
## Autocuidado : 39
## Comunicación : 39
## Interacciones y relaciones personales : 39
## Movilidad : 39
## (Other) :117
## Cuidados
## Andar o desplazarse por la casa : 27
## Asearse, arreglarse, bañarse, ducharse : 27
## Cambiar de postura, mover o mantener el cuerpo en una determinada posición: 27
## Comer, beber, alimentarse : 27
## Hacer la compra, preparar comidas, etc. : 27
## Ir al servicio, cambiar pañales, etc. : 27
## (Other) :189
## Total
## 100,00 : 27
## 19,14 : 2
## 19,37 : 2
## 20,04 : 2
## 24,29 : 2
## 4,83 : 2
## (Other):314
En read.table y sus derivados puedes indicar, además de ficheros disponibles en el disco duro, la URL de uno disponible en internet. Prueba a leer directamente el fichero disponible en https://datanalytics.com/uploads/datos_treemap.txt. Nota: es un fichero de texto separado por tabuladores y con nombres de columna.
analisis <- read.table( "https://datanalytics.com/uploads/datos_treemap.txt", sep = "\t",header = T)
analisis
## 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
Alternativamente, si quieres leer un fichero remoto, puedes descargarlo directamente desde R. Consulta la ayuda de download.file para bajarte al disco duro el fichero del ejercicio anterior (EJERCICIO 5) y leerlo después.
download.file(url = "https://datanalytics.com/uploads/datos_treemap.txt",
destfile = "Datos_Analisis")
read.table("Datos_Analisis")
## 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