Importar datos en R



Se puede realizar de formas diferentes :

  1. Utilizando el menú RStudio
  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/Colombia23.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/Colombia23.RDS")



Revisión y arreglo de los datos



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

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  
 fecha_reporte_web   id_de_caso        fecha_de_notificaci_n departamento      
 Length:9636        Length:9636        Length:9636           Length:9636       
 Class :character   Class :character   Class :character      Class :character  
 Mode  :character   Mode  :character   Mode  :character      Mode  :character  
 departamento_nom   ciudad_municipio   ciudad_municipio_nom     edad          
 Length:9636        Length:9636        Length:9636          Length:9636       
 Class :character   Class :character   Class :character     Class :character  
 Mode  :character   Mode  :character   Mode  :character     Mode  :character  
 unidad_medida          sexo           fuente_tipo_contagio  ubicacion        
 Length:9636        Length:9636        Length:9636          Length:9636       
 Class :character   Class :character   Class :character     Class :character  
 Mode  :character   Mode  :character   Mode  :character     Mode  :character  
    estado           recuperado        fecha_inicio_sintomas fecha_diagnostico 
 Length:9636        Length:9636        Length:9636           Length:9636       
 Class :character   Class :character   Class :character      Class :character  
 Mode  :character   Mode  :character   Mode  :character      Mode  :character  
 fecha_recuperado   tipo_recuperacion    per_etn_          nom_grupo_       
 Length:9636        Length:9636        Length:9636        Length:9636       
 Class :character   Class :character   Class :character   Class :character  
 Mode  :character   Mode  :character   Mode  :character   Mode  :character  
 fecha_muerte       pais_viajo_1_cod   pais_viajo_1_nom  
 Length:9636        Length:9636        Length:9636       
 Class :character   Class :character   Class :character  
 Mode  :character   Mode  :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(Colombia23$ubicacion)

        casa         Casa    Fallecido     Hospital Hospital UCI          N/A 
          12         9150           69          331           33           41 

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

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:

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

Colombia23$ubicacion=str_to_lower(Colombia23$ubicacion)

Para verificar los arreglo volvemos a construir la tabla

table(Colombia23$ubicacion)

        casa    fallecido     hospital hospital uci          n/a 
        9162           69          331           33           41 

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

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

        casa    fallecido     hospital hospital uci 
        9162           69          331           33 

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(Colombia23$edad)
[1] "character"
Colombia23$edad=as.integer(Colombia23$edad)
class(Colombia23$edad)
[1] "integer"

De igual manera procedemos con las demás variables

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

Verificamos los cambios

table(Colombia23$sexo)

   f    m 
5611 4025 
table(Colombia23$estado)

fallecido     grave      leve  moderado 
       69        33      9162       331 
table(Colombia23$recuperado)

    activo  fallecido recuperado 
      4839         69       4687 

Finalmente convertimos todas las variables fecha en formado date

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



YA ESTA LISTA LA BASE !!!!



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/Colombia23.csv")

o en formato RDS

saveRDS(Colombia23, 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=Colombia23[Colombia23$ciudad_municipio_nom=="CALI",]
Valle=subset(Colombia23, departamento=="76")



Manejo de MAYUSCULAS y minusculas

library(stringr)
texto <- "probabilidad y estadística es importante en la formación de todo profesional"
str_to_upper(texto)
[1] "PROBABILIDAD Y ESTADÍSTICA ES IMPORTANTE EN LA FORMACIÓN DE TODO PROFESIONAL"
#[1] "PROBABILIDAD Y ESTADISTICA ES UNA ASIGNATURA IMPORTANTE EN LA FORMACIÓN DE TODO PROFESIONAL"
str_to_lower(texto)
[1] "probabilidad y estadística es importante en la formación de todo profesional"
#[1] "probabilidad y estadística es una asignatura importante en la formación de todo profesional"
str_to_title(texto)
[1] "Probabilidad Y Estadística Es Importante En La Formación De Todo Profesional"
#[1] "Probabilidad Y Estadística Es Una Asignatura Importante En La Formación De Todo Profesional"
str_to_sentence(texto)
[1] "Probabilidad y estadística es importante en la formación de todo profesional"
#[1] "Probabilidad y estadística es una asignatura importante en la formación de todo profesional"



Algunos sitios de interés



Librerías en R

Creación de paquetes R con Rstudio

Tutoriales interactivos con R



Código resumen Covid-19

install.packages("tidyverse") #  instalacion de paquete para manejo de datos
library(tidyverse)   # libreria de librerias util en el manejo de datos

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 de manera remota 

# adecuación de la base de datos
Colombia$edad=as.integer(Colombia$edad)  # convertir en entoro la variable edad
Colombia$sexo=str_to_lower(Colombia$sexo) # pasar a minusculas todos valores de la variable sexo
Colombia$estado=str_to_lower(Colombia$estado) # pasar a minusculas todos lo valores de la variable estado
Colombia$estado[Colombia$estado=="n/a"]=NA   # cambiar el valor  n/a por NA - valores faltantes
Colombia$recuperado=str_to_lower(Colombia$recuperado) # pasar a minusculas todos los valores de la variable recuperado
Colombia$recuperado[Colombia$recuperado=="n/a"]=NA 

# seleccion de bases
Colombia22=subset(Colombia, Colombia$fecha_reporte_web>="2022-01-01") # data del 2022
Colombia21=subset(Colombia, Colombia$fecha_reporte_web>="2021-01-01" & Colombia$fecha_reporte_web<"2022-01-01") # data de 2021
Colombia20=subset(Colombia, Colombia$fecha_reporte_web>="2020-01-01" & Colombia$fecha_reporte_web<"2021-01-01") # data de 2020

Valle22=subset(Colombia22, departamento=="76") # data del valle del cauca de 2022
Cali22= subset(Colombia22, ciudad_municipio_nom=="CALI") # data de cali de 2022

table(Colombia22$estado)
table(Colombia21$estado)
table(Colombia20$estado)

summarytools::freq(Colombia22$estado, cumul = F)
summarytools::freq(Colombia21$estado, cumul = F)
summarytools::freq(Colombia20$estado, cumul = F)
summarytools::descr(Colombia22$edad)

saveRDS(Colombia, file = "data/Colombia.RDS")  # guardar base con modificaciones
#-----------------------------------------------------