Está en la página 1de 5

Dplyr

Camilo Castillo

En esta clase vamos a manipular los datos de una base. El objetivo es utilizar algunos comandos para
segmentar, filtrar, resumir o transformar los datos y uno de los paquetes m’as utilizados es dplyr. En dplyr
encontraremos funciones como:

1. filter.
2. select.
3. distinct.
4. summarize.
5. count.
6. mean.
7. mutate.

Durante la clase vamos a recorrer todos los comandos anteriores. A diferencia de las clases anteriores
desarrollaremos ejercicios durante la clase para entender mejor el funcionamiento de cada comando. Las
bases de datos que vamos a trabajar est’an en las p’aginas https://covid.ourworldindata.org/data/ecdc/
full_data.csv y https://covid.ourworldindata.org/data/ecdc/locations.csv.

library(kableExtra)
full <- read.csv("https://covid.ourworldindata.org/data/ecdc/full_data.csv")
pobl=read.csv("https://covid.ourworldindata.org/data/ecdc/locations.csv")
COVID=merge(full,pobl, by="location")

Ejercicio

1. Muestre los primero 3 datos de COVID


2. Halle las estad’isticas b’asicas de COVID.

location date new_cases new_deaths total_cases total_deaths weekly_cases weekly_deaths biw


Afghanistan 2020-01-07 0 0 0 0 0 0
Afghanistan 2020-01-08 0 0 0 0 0 0
Afghanistan 2019-12-31 0 0 0 0 NA NA

location date new_cases new_deaths total_cases total_deaths weekly_cases


Length:41745 Length:41745 Min. :-8261.0 Min. :-1918.00 Min. : 0 Min. : 0 Min. : -3864
Class :character Class :character 1st Qu.: 0.0 1st Qu.: 0.00 1st Qu.: 40 1st Qu.: 0 1st Qu.: 3
Mode :character Mode :character Median : 8.0 Median : 0.00 Median : 832 Median : 14 Median : 89
NA NA Mean : 660.7 Mean : 21.56 Mean : 42257 Mean : 1826 Mean : 4582
NA NA 3rd Qu.: 139.0 3rd Qu.: 2.00 3rd Qu.: 8609 3rd Qu.: 182 3rd Qu.: 100
NA NA Max. :90802.0 Max. : 4928.00 Max. :6300671 Max. :189208 Max. :589256
NA NA NA’s :326 NA’s :326 NA’s :326 NA’s :326 NA’s :1102

1
Todos los comandos dentro de dplyr retornan un Data Frame y la sintaxis es muy parecida, recibe como
primera entrada el Data Frame a manipular y las siguientes son opciones propias de cada comando. Comence-
mos cargando el paquete dplyr y estudiando el comando select

library(dplyr)

Select
El comando select() nos permite guardar solo las variables que seleccionemos.

base1=select(COVID,location,date,new_cases,new_deaths,total_cases,total_deaths,population)
str(base1,3)

## ’data.frame’: 41745 obs. of 7 variables:


## $ location : chr "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
## $ date : chr "2020-01-07" "2020-01-08" "2019-12-31" "2020-01-01" ...
## $ new_cases : int 0 0 0 0 0 0 0 0 0 0 ...
## $ new_deaths : int 0 0 0 0 0 0 0 0 0 0 ...
## $ total_cases : int 0 0 0 0 0 0 0 0 0 0 ...
## $ total_deaths: int 0 0 0 0 0 0 0 0 0 0 ...
## $ population : int 38928341 38928341 38928341 38928341 38928341 38928341 38928341 38928341 3892834

Note la cantidad de variables que tiene base1. dplyr tiene una gran herramienta para organizar mejor
nuestro c’odigo, esta herramienta es conocida como pip. Vemos el comando select utilizando pipes.

base_1= COVID %>%


select(location,date,new_cases,new_deaths,total_cases,total_deaths,population)

Ejercicio

1. A partir de COVID construya una base bajo el nombre ejercicio que solo contenga las variables:
location, date, continent, new cases, new deaths, total cases y total deaths.
2. Imprima en consola las primeras 3 observaciones.

distinct
El comando distinct construye un df con los valores diferentes de una variable

COVID %>%
distinct(continent)

## continent
## 1 Asia
## 2 Europe
## 3 Africa
## 4 North America
## 5 South America
## 6 Oceania
## 7

Note que no se asign’o nombre, es decir no se guarda en consola el retorno del comando.

2
Filter

El comando filter nos permite construir un Data Frame con alguna condici’on sobre las variables (filtra
las variables).

America= COVID %>%


filter(continent %in% c("North America", "South America")) %>%
select(location,date,new_cases,new_deaths,total_cases,total_deaths,population)

str(America)

## ’data.frame’: 9045 obs. of 7 variables:


## $ location : chr "Anguilla" "Anguilla" "Anguilla" "Anguilla" ...
## $ date : chr "2020-03-28" "2020-03-29" "2020-03-27" "2020-04-10" ...
## $ new_cases : int 0 0 2 0 0 0 0 0 0 1 ...
## $ new_deaths : int 0 0 0 0 0 0 0 0 0 0 ...
## $ total_cases : int 2 2 2 3 3 2 2 2 2 3 ...
## $ total_deaths: int 0 0 0 0 0 0 0 0 0 0 ...
## $ population : int 15002 15002 15002 15002 15002 15002 15002 15002 15002 15002 ...

El comando filter realiza una prueba l’ogica, en el caso del ejemplo la prueba es mirar si cada elemento de
la variable continent es igual a North America o South America, de ser Verdadero lo guarda en el nuevo
df.
Algunos comandos l’ogicos ’utiles:

• == (igual).
• > , < (mayor que, menor que).
• >= , <= (mayor o igual, menor o igual).
• & (y).
• | (o).
• ! (no).
• is.na().
• between().

Ejercicio

1. Construya un df con los paises de Europa bajo el nombre Europa.


2. Construya un df con los paises de Sur Am’erica bajo el nombre Sur_America.
3. Construya un df con los datos de la ’ultima fecha.

Summarize

El comando summarize entrega un resumen del df.

COVID %>%
summarize(media=mean(total_cases, na.rm = T))

## media
## 1 42257.42

3
group_by

El comando group_by junto a summarize es mucho m’as ’util.

COVID %>%
group_by(continent) %>%
summarize(media_continente =mean(na.omit(new_cases)))

## ‘summarise()‘ ungrouping output (override with ‘.groups‘ argument)

## # A tibble: 7 x 2
## continent media_continente
## <chr> <dbl>
## 1 "" 10.9
## 2 "Africa" 136.
## 3 "Asia" 783.
## 4 "Europe" 346.
## 5 "North America" 1160.
## 6 "Oceania" 20.2
## 7 "South America" 2729.

Ejercicio

1. Construya un df con la media y la desviaci’on est’andar de la variable new_deaths para cada d’ia.
2. Construya una gr’afica con plot de la tabla anterior.

Mutate

El comando mutate construye nuevas variables en el df a partir de variables ya existentes. Las nuevas
variables son transformaciones de las variables existentes.

Ejemplo

COVID$date =as.Date(COVID$date)

COVID_Ultimo_dia = COVID %>%


filter(date == tail(COVID$date,1)) %>%
mutate(Porcent=total_deaths/population)

COVID_Ultimo_dia$Porcent[COVID_Ultimo_dia$location == "Colombia"]

## [1] 0.000424799

Count

Cuenta el n’umero de observaciones que hay en cada grupo.

4
Ejemplo

COVID%>%
filter(continent == "South America")%>%
count(location)

## location n
## 1 Argentina 188
## 2 Bolivia 180
## 3 Brazil 253
## 4 Chile 188
## 5 Colombia 183
## 6 Ecuador 253
## 7 Falkland Islands 158
## 8 Guyana 178
## 9 Paraguay 182
## 10 Peru 185
## 11 Suriname 173
## 12 Uruguay 178
## 13 Venezuela 178

Qu’e puede interpretar de esta tabla?

Ejercicio

1. Hallar el porcentaje de casos nuevos para el dia 30 de agosto de 2020.


2. Hallar el porcentaje de nuevas muertes por continente el dia 8 de septiembre de 2020.

También podría gustarte