1. Importar datos en R

Se puede realizar de formas diferentes :

  1. Utilizando el menú RStudio
  • Caso formato .csv : File /Import Dataset/From text (base).
  • Caso formato .xlsx : File/ Import Dataset/ From Excel.
  1. Utilizando el paquete Rcmdr y RcomdrMisc que activa una interfas de R que trabaja con menus y ventanas con un proceso parecido al anterio

Los anteriores caso implican que tengamos la base de datos descargada en una carpeta de nuestro PC

  1. Podemos importar la base de datos de un repositorio que maneje API que es un permiso a traves de un token. En este caso debemos solicitar el token e instalar el paquete RSocrata

Por ejemplo

Instalación de paquetes requeridos

# install.packages("RSocrata", dependencies = TRUE)   # instalación de paquete RSocrata
 library(RSocrata)    # llamado de libreria
 # token <- "zxMsD6eXc0zlEMryRGW87Hwrz"  # token
 # Colombia <- read.socrata("https://www.datos.gov.co/resource/gt2j-8ykr.json", app_token = token) # lectura 

Este proceso tarde unos minutos pues la base es grande

Para guardar el archivo en mi PC, el formarto RDS es menos pesado En ete caso se guarda el archivo con el nombre de Colombia.RDS en la carpeta data/

saveRDS(Colombia, file = "data/Colombia.RDS") 
  1. Podemos trabajar con Dataset disponible en los paquetes de R. Para ello solo utilizamos la función data
data(iris)  # data set iris
data(cars)  # data set cars

Ahora si tengo un archivo en mi PC, puedo utilizar la siguinte función para conocer la ruta donde esta el archivo y luego copiando la ruta obtenida con Ctrl+C,

file.choose()

En mi caso se genera la ruta “data/Colombia.RDS”

Colombia<- readRDS("data/Colombia.RDS")

2. Revisión y arreglo de los datos

Después de bajar la data es necesario revisar que no tenga problemas como:

  • variables con cadenas escritas de diferente forma, p.ej.: casa, CASA, Casa. esta revisión la podemos hacer rápidamente con la función summary()
summary(iris)
  Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
 Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
 1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
 Median :5.800   Median :3.000   Median :4.350   Median :1.300  
 Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
 3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
 Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
       Species  
 setosa    :50  
 versicolor:50  
 virginica :50  
                
                
                
summary(cars)
     speed           dist       
 Min.   : 4.0   Min.   :  2.00  
 1st Qu.:12.0   1st Qu.: 26.00  
 Median :15.0   Median : 36.00  
 Mean   :15.4   Mean   : 42.98  
 3rd Qu.:19.0   3rd Qu.: 56.00  
 Max.   :25.0   Max.   :120.00  
  id_de_caso        ciudad_municipio_nom fecha_inicio_sintomas
 Length:4957277     Length:4957277       Min.   :NA           
 Class :character   Class :character     1st Qu.:NA           
 Mode  :character   Mode  :character     Median :NA           
                                         Mean   :NA           
                                         3rd Qu.:NA           
                                         Max.   :NA           
                                         NA's   :4957277      
 confirmados        fecha_de_notificaci_n fecha_diagnostico  fecha_muerte    
 Length:4957277     Min.   :NA            Min.   :NA        Min.   :NA       
 Class :character   1st Qu.:NA            1st Qu.:NA        1st Qu.:NA       
 Mode  :character   Median :NA            Median :NA        Median :NA       
                    Mean   :NA            Mean   :NA        Mean   :NA       
                    3rd Qu.:NA            3rd Qu.:NA        3rd Qu.:NA       
                    Max.   :NA            Max.   :NA        Max.   :NA       
                    NA's   :4957277       NA's   :4957277   NA's   :4957277  
 fecha_reporte_web departamento       departamento_nom   ciudad_municipio  
 Min.   :NA        Length:4957277     Length:4957277     Length:4957277    
 1st Qu.:NA        Class :character   Class :character   Class :character  
 Median :NA        Mode  :character   Mode  :character   Mode  :character  
 Mean   :NA                                                                
 3rd Qu.:NA                                                                
 Max.   :NA                                                                
 NA's   :4957277                                                           
      edad       unidad_medida          sexo           fuente_tipo_contagio
 Min.   :  1.0   Length:4957277     Length:4957277     Length:4957277      
 1st Qu.: 26.0   Class :character   Class :character   Class :character    
 Median : 37.0   Mode  :character   Mode  :character   Mode  :character    
 Mean   : 39.5                                                             
 3rd Qu.: 52.0                                                             
 Max.   :114.0                                                             
                                                                           
  ubicacion            estado          pais_viajo_1_cod   pais_viajo_1_nom  
 Length:4957277     Length:4957277     Length:4957277     Length:4957277    
 Class :character   Class :character   Class :character   Class :character  
 Mode  :character   Mode  :character   Mode  :character   Mode  :character  
                                                                            
                                                                            
                                                                            
                                                                            
  recuperado        fecha_recuperado  tipo_recuperacion    per_etn_        
 Length:4957277     Min.   :NA        Length:4957277     Length:4957277    
 Class :character   1st Qu.:NA        Class :character   Class :character  
 Mode  :character   Median :NA        Mode  :character   Mode  :character  
                    Mean   :NA                                             
                    3rd Qu.:NA                                             
                    Max.   :NA                                             
                    NA's   :4957277                                        
  nom_grupo_       
 Length:4957277    
 Class :character  
 Mode  :character  
                   
                   
                   
                   

Por otro lado la función View() permite visualizar la base en una ventana de manera separada

View(Colombia)  
View(iris

Podemos visualizar los primeros 6 registros con el nombre de las variables

head(iris) 
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

y los últimos seis registros

tail(iris)
    Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
145          6.7         3.3          5.7         2.5 virginica
146          6.7         3.0          5.2         2.3 virginica
147          6.3         2.5          5.0         1.9 virginica
148          6.5         3.0          5.2         2.0 virginica
149          6.2         3.4          5.4         2.3 virginica
150          5.9         3.0          5.1         1.8 virginica

Para realizar una revisión de una variable cualitativa utilizamos la función table(), la cual construye una tabla de frecuencias

table(Colombia$ubicacion)

        casa    fallecido     hospital hospital uci 
     4803358       126299         7950          993 

Observemos aparecen valores diferentes para una sola categoría de la variable:

  • casa
  • Casa
  • CASA

Es necesario estandarizar estos valores y convertirlos en este caso a todos los valores en casa (en minúsculas). Para vamos a utilizar la función : str_to_lower() del paquete stringr, guardandolo dentro de la misma variable

Inicialmente debemos de instalar y activar el paquete tidyverse que es un paquete que contiene ocho paquetes todos enfocados al análisis de datos:

  • ggplot2 - construcción de gráficos
  • purrr - herramientas para programación funcional
  • tibble - manejo de data frames
  • dplyr - manejo de datos
  • tidyr - manejo de datos
  • stringr - manejo de cadenas
  • readr - lectura de datos
  • forcats - pronósticos de series de tiempo y modelos lineales
install.packages("tidyverse", dependencies = TRUE)
library(tidyverse)

Despues de activar el conjunto de librerías, procedemos a realizar el arreglo de la variable Colombia$ubucacion

Ahora arreglamos el problema presentado en la variable ubucacion, primero unificando todos los valores a en minúscula

Colombia$ubicacion=str_to_lower(Colombia$ubicacion)

Para verificar los arreglo volvemos a construir la tabla

table(Colombia$ubicacion)

        casa    fallecido     hospital hospital uci 
     4803358       126299         7950          993 

Después de esto realizamos en cambio de n/a por NA

Colombia$ubicacion[Colombia$ubicacion=="n/a"]=NA
table(Colombia$ubicacion)

        casa    fallecido     hospital hospital uci 
     4803358       126299         7950          993 

Otro problema que presenta la base de datos es que la variable edad es en formato chr y debería ser numérica. Para cambiar el formato utilizamos la función as.numeric() y la guardamos en la misma variable

class(Colombia$edad)
[1] "integer"
Colombia$edad=as.integer(Colombia$edad)
class(Colombia$edad)
[1] "integer"

De igual manera procedemos con las demás variables

Colombia$sexo=str_to_lower(Colombia$sexo)
Colombia$estado=str_to_lower(Colombia$estado)
Colombia$estado[Colombia$estado=="n/a"]=NA
Colombia$recuperado=str_to_lower(Colombia$recuperado)
Colombia$recuperado[Colombia$recuperado=="n/a"]=NA

Verificamos los cambios

table(Colombia$sexo)

      f       m 
2602214 2355063 
table(Colombia$estado)

fallecido     grave      leve  moderado 
   126299       993   4803358      7950 
table(Colombia$recuperado)

    activo  fallecido recuperado 
     15647     126299    4799576 

Finalmente convertimos todas las variables fecha en formado date

Colombia$fecha_reporte_web=lubridate::dmy(Colombia$fecha_reporte_web)
Colombia$fecha_de_notificaci_n=lubridate::dmy(Colombia$fecha_de_notificaci_n)
Colombia$fecha_inicio_sintomas=lubridate::dmy(Colombia$fecha_inicio_sintomas)
Colombia$fecha_diagnostico=lubridate::dmy(Colombia$fecha_diagnostico)
Colombia$fecha_recuperado=lubridate::dmy(Colombia$fecha_recuperado)
Colombia$fecha_muerte=lubridate::dmy(Colombia$fecha_muerte)

YA ESTA LISTA LA BASE !!!!

3. Guardar la base de datos

Este un trabajo que demanda mucho tiempo, pero que es necesario para tener una buena calidad en los datos. Cuando la base esta bien, podemos continuar con los demás procesos y también guardar la base transformada para una posterior procesamiento

En este caso la se guarda en formato csv

write_csv(Colombia, "data/Colombia.csv")

o en formato RDS

saveRDS(Colombia, file = "data/Colombia.RDS")

LISITO !!!!

TENEMOS LA BASE DEL COVID.19 ACTUALIZADA Y ARREGLADA

En caso de querer seleccionar una parte de la data, por ejemplo los datos de CALI utilizamos en siguiente código

Cali=Colombia[Colombia$ciudad_municipio_nom=="CALI",]
Valle=subset(Colombia, departamento=="76")

Manejo de MAYUSCULAS y minusculas

[1] "PROBABILIDAD Y ESTADÍSTICA ES UNA ASIGNATURA IMPORTANTE EN LA FORMACIÓN DE TODO PROFESIONAL"
[1] "probabilidad y estadística es una asignatura importante en la formación de todo profesional"
[1] "Probabilidad Y Estadística Es Una Asignatura Importante En La Formación De Todo Profesional"
[1] "Probabilidad y estadística es una asignatura importante en la formación de todo profesional"