UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE CIENCIAS ECONÓMICAS
CARRERA DE ESTADÍSTICA

Autores:

Grupo 5

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

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.

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.

EJERCICIOS PROPUESTOS

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.

Ejecución del ejercicio:

Elegimos el directorio en el que vamos a guardar nuestro programa y el fichero que vamos a utilizar, y revisamos si se guardo en el directorio que elegimos.

setwd("E:/Programacion1")
getwd()
## [1] "E:/Programacion1"

Con la función read.table vamos a leer el fichero, y guardaremos los datos del fichero en la varible paro

paro<- read.table(file="paro.csv",header = T, sep = "")

Procedemos a comprobar si se importó correctamente el fichero con las siguientes funciones:

  1. head: hace que se visualicen las 6 primeras filas u observaciones del conjunto de datos.
head(paro)
##    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
  1. tail: devuelve los 6 últimos valores del conjunto de datos.
tail(paro)
##       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
  1. nrow: se utiliza para calcular el número de filas en una matriz o en un data frame
nrow(paro)
## [1] 8320
  1. summary: muestra un resumen general sobre las variables del data frame (mínimo, máximo, media, mediana, primer y tercer cuartil). Además, R reconoce que las variables categóricas, por lo que muestra la frecuencia de cada categoría.
summary(paro)
##     Gender           Provinces           Periodo           Situation        
##  Length:8320        Length:8320        Length:8320        Length:8320       
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##                                                                             
##      value       
##  Min.   :   0.0  
##  1st Qu.:  14.4  
##  Median :  61.9  
##  Mean   : 120.1  
##  3rd Qu.: 144.7  
##  Max.   :1828.9  
##  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

Ejecución del ejercicio:

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

setwd("E:/Programacion1")
paro2<- read.table(file="paro.csv")

Una vez cargado el fichero, se procederá a utilizar las funciones anteriores, tales como: head, tail, nrow y summary.

head(paro2)
##        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(paro2)
##           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(paro2)
## [1] 8321
summary(paro2)
##       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

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

Ejecución del ejercicio:

Se importará un fichero en csv y lo haremos de la misma forma que lo hicimos anteriormente con el fichero de paro.

camas_disponibles1 <- read.csv("E:/Programacion1/camas disponibles2022.csv",header = T, sep=";")

Una vez importado el fichero, se ejecutarán las funciones aplicadas en los anteriores ejercicios.

head(camas_disponibles1)
##                         prov_ubi      cant_ubi      parr_ubi area_ubi
## 1                         Guayas     Guayaquil      Ayacucho   Urbana
## 2 Santo Domingo de los Tsáchilas Santo Domingo     Chiguilpe   Urbana
## 3                      Pichincha         Quito La Concepción   Urbana
## 4                      Pichincha         Quito     Rumipamba   Urbana
## 5                         Guayas   Pedro Carbo     Sabanilla    Rural
## 6                         Guayas         Daule        Banife   Urbana
##                                                           clase
## 1                                             Gineco-Obstétrico
## 2                                               Hospital básico
## 3                                               Hospital básico
## 4                                              Hospital general
## 5 Establecimientos del día que prestan internacion hospitalaria
## 6                            Clínica general (sin especialidad)
##                                  tipo                     entidad
## 1                               Agudo Privados sin fines de lucro
## 2         Sin tipo hospitales básicos Privados con fines de lucro
## 3         Sin tipo hospitales básicos Privados con fines de lucro
## 4                               Agudo Privados con fines de lucro
## 5                               Agudo Privados sin fines de lucro
## 6 Clínicas generales sin especialidad Privados sin fines de lucro
##                       sector camas_disp totegres
## 1 Privado sin fines de lucro         34     1686
## 2 Privado con fines de lucro          8      402
## 3 Privado con fines de lucro         12      518
## 4 Privado con fines de lucro         40     2254
## 5 Privado sin fines de lucro          7       73
## 6 Privado sin fines de lucro          6      278
tail(camas_disponibles1)
##       prov_ubi    cant_ubi         parr_ubi area_ubi
## 45       Cañar     Azoques          Azogues   Urbana
## 46  Esmeraldas  Esmeraldas      5 De Agosto   Urbana
## 47   Pichincha       Quito Centro Histórico   Urbana
## 48      Guayas   Guayaquil   Febres Cordero   Urbana
## 49   Pichincha       Quito         Ponceano   Urbana
## 50 Santa Elena Santa Elena      Santa Elena   Urbana
##                                                            clase
## 45                                               Hospital básico
## 46                            Clínica general (sin especialidad)
## 47                            Clínica general (sin especialidad)
## 48 Establecimientos del día que prestan internacion hospitalaria
## 49                            Clínica general (sin especialidad)
## 50                                               Hospital básico
##                                   tipo                     entidad
## 45         Sin tipo hospitales básicos Privados con fines de lucro
## 46 Clínicas generales sin especialidad Privados con fines de lucro
## 47 Clínicas generales sin especialidad Privados con fines de lucro
## 48                               Agudo Privados con fines de lucro
## 49 Clínicas generales sin especialidad Privados con fines de lucro
## 50         Sin tipo hospitales básicos Privados sin fines de lucro
##                        sector camas_disp totegres
## 45 Privado con fines de lucro         11     1125
## 46 Privado con fines de lucro         11      147
## 47 Privado con fines de lucro        205     2098
## 48 Privado con fines de lucro         13       43
## 49 Privado con fines de lucro         34     2354
## 50 Privado sin fines de lucro         26      353
nrow(camas_disponibles1)
## [1] 50
summary(camas_disponibles1)
##    prov_ubi           cant_ubi           parr_ubi           area_ubi        
##  Length:50          Length:50          Length:50          Length:50         
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     clase               tipo             entidad             sector         
##  Length:50          Length:50          Length:50          Length:50         
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##    camas_disp        totegres     
##  Min.   :  3.00   Min.   :   1.0  
##  1st Qu.:  8.00   1st Qu.: 150.8  
##  Median : 12.50   Median : 462.0  
##  Mean   : 23.96   Mean   : 681.0  
##  3rd Qu.: 25.25   3rd Qu.: 928.0  
##  Max.   :205.00   Max.   :2354.0

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.

Ejecución del ejercicio:

Cargamos la ruta

ur1="https://datanalytics.com/uploads/datos_treemap.txt"

Leemos el fichero

url1=read.table(ur1,header=TRUE)

url1
##    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.

Ejecución del ejercicio:

Downoad.file nos ayuda a descargar el fichero del enlache a la carpeta de nuestro directorio

download.file(ur1,"fichero.txt")

Para leer el fichero ya descargado se hará uso de la función read.table

read.table("fichero.txt")
##       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