UNIVERSIDAD CENTRAL DEL ECUADOR

FACULTAD DE CIENCIAS ECONÓMICAS

INGENIERÍA EN ESTADÍSTICA

Autores: Caranqui Vanessa, Cevallos Gabriela, Loachamin Erika, Rosero Lennyn

Fecha de Publicación: 2023-01-15

Docente: Ing. Francisco Valverde

EJERCICIOS DE EXPORTACIÓN E IMPORTACIÓN DE ARCHIVOS EN R

EJERCICIOS SOBRE TRATAMIENTO DE ARCHIVOS

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:

EJERCICIO N°1

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.

  1. Se debe iniciar con la lectura y la carga de los datos como data frame. Adicional a eso, se requiere la instalación de diversos paquetes para la importación/exportación de los archivos.

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"

  1. Una vez cargada la base, se procederá a utilizar algunas funciones, tales como: head, tail, nrow y summary, cabe aclarar que para poder hacer uso de summary, se deben transformar las variables a tipo factor.

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

EJERCICIO N°2

Repite el ejercicio anterior eliminando la opción header = TRUE. Examina el resultado y comprueba que, efectivamente, los datos no se han cargado correctamente.

  1. Al igual que el ejercicio anterior, se debe leer y cargar la base de datos, en este caso, sin ubicar la función header.

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"

  1. Una vez cargada la base, se procederá a utilizar algunas funciones, tales como: head, tail, nrow y summary, cabe aclarar que para poder hacer uso de summary, se deben transformar las variables a tipo factor.

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.

EJERCICIO N°3

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).

  1. Para este ejercicio se utilizará la base de datos encontrada en línea, acerca de los grupos de discapacidades que padecen las personas; para esto, se debe importar el archivo csv mediante la función read.table.

getwd()
setwd("C:/Users/Cevallos/Downloads")
dir()

discapacidad <- read.table(file = "51594 (1).csv", header = T, sep = "\t", dec = ".")
discapacidad

  1. Una vez importada la respectiva base, se ejecutarán las funciones aplicadas en los anteriores ejercicios.

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

EJERCICIO N°4

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.

  1. Ya que el archivo está en formato texto y separado por tabuladores, se utilizará la función sep = “.

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

EJERCICIO N°5

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.

  1. Se asignará a una variable el link del fichero, luego se hará uso de la función download.file y dentro del paréntesis se colocará la variable asignada separada por coma y el nombre del fichero. Para leer el fichero ya descargado se hará uso de la función read.table.

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