library(magrittr) # install.packages("magrittr")
# representar usando las funciones
(((12 * 5) - 11)/ 7) + 3
## [1] 10

add() subtract() multiply_by() divide_by()

Forma anidada

add(divide_by(subtract(multiply_by(12, 5), 11), 7), 3)
## [1] 10

Objetos intermedios

numero_inicial <- 12
resultado1 <- multiply_by(numero_inicial, 5)
resultado2 <- subtract(resultado1, 11)
resultado3 <- divide_by(resultado2, 7)
resultado_final <- add(resultado3, 3)
resultado_final
## [1] 10
numero <- 12
numero <- multiply_by(numero, 5)
numero <- subtract(numero, 11)
numero <- divide_by(numero, 7)
numero <- add(numero, 3)
numero
## [1] 10

Usar pipes

(((12 * 5) - 11)/ 7) + 3
## [1] 10
numero <- 12
numero <- multiply_by(numero, 5)
numero <- subtract(numero, 11)
numero <- divide_by(numero, 7)
numero <- add(numero, 3)
numero
## [1] 10
12 %>% 
  multiply_by(5) %>% 
  subtract(11) %>% 
  divide_by(7) %>% 
  add(3)
## [1] 10

Ejercicio

(((10 + 30) * 3) / 12) - 5
## [1] 5
10 %>% 
    add(30) %>% 
    multiply_by(3) %>% 
    divide_by(12) %>% 
    subtract(5)
## [1] 5
(((7 - 3) / -2) + 3) * 20
## [1] 20
7 %>% 
    subtract(3) %>% 
    divide_by(-2) %>% 
    add(3) %>% 
    multiply_by(20)
## [1] 20
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readxl)

gapminder <- read_xlsx("data/gapminder.xlsx")

Forma anidada

arrange(ungroup(summarise(group_by(mutate(select(filter(gapminder, year %in% c(1987, 2007)), continent, year, gdpPercap, pop), PBI_nacional = pop * gdpPercap), continent, year), promedio = mean(PBI_nacional))), year, desc(promedio))
## `summarise()` has grouped output by 'continent'. You can override using the `.groups` argument.
## # A tibble: 10 x 3
##    continent  year      promedio
##    <chr>     <dbl>         <dbl>
##  1 Americas   1987 439447790357.
##  2 Europe     1987 316507473546.
##  3 Asia       1987 241784763369.
##  4 Oceania    1987 209451563998.
##  5 Africa     1987  24107264108.
##  6 Americas   2007 776723426068.
##  7 Asia       2007 627513635079.
##  8 Europe     2007 493183311052.
##  9 Oceania    2007 403657044512.
## 10 Africa     2007  45778570846.

Forma con objetos intermedios

gapminder_modificado <- filter(gapminder, year %in% c(1987, 2007)) 

gapminder_modificado <- select(gapminder_modificado, continent, year, gdpPercap, pop)

gapminder_modificado <- mutate(gapminder_modificado, PBI_nacional = pop * gdpPercap)

gapminder_modificado <- group_by(gapminder_modificado, continent, year)

gapminder_modificado <- summarise(gapminder_modificado, promedio = mean(PBI_nacional))
## `summarise()` has grouped output by 'continent'. You can override using the `.groups` argument.
gapminder_modificado <- ungroup(gapminder_modificado)

gapminder_modificado <- arrange(gapminder_modificado, year, desc(promedio))

Forma encadenada con pipes

gapminder %>% 
  filter(year %in% c(1987, 2007)) %>%
  select(continent, year, gdpPercap, pop) %>% 
  mutate(PBI_nacional = pop * gdpPercap) %>% 
  group_by(continent, year) %>% 
  summarise(promedio = mean(PBI_nacional)) %>% 
  ungroup() %>% 
  arrange(year, desc(promedio))
## `summarise()` has grouped output by 'continent'. You can override using the `.groups` argument.
## # A tibble: 10 x 3
##    continent  year      promedio
##    <chr>     <dbl>         <dbl>
##  1 Americas   1987 439447790357.
##  2 Europe     1987 316507473546.
##  3 Asia       1987 241784763369.
##  4 Oceania    1987 209451563998.
##  5 Africa     1987  24107264108.
##  6 Americas   2007 776723426068.
##  7 Asia       2007 627513635079.
##  8 Europe     2007 493183311052.
##  9 Oceania    2007 403657044512.
## 10 Africa     2007  45778570846.

Ejercicio 1

Utilizando gapminder y las funciones de dplyr, obtén el ranking del PBI nacional de Perú, México, Colombia y Chile en los años 1967, 1987 y 2007.

Guíate de esta secuencia:

Esta parte se ha corregido respecto a las indicaciones originales

Usar gapminder Filtrar los datos de los cuatro países y los años seleccionados Seleccionar las variables pais, año, población y pbi per cápita Calcular el pbi total para cada observación Organizar por valor de año en forma ascendente y pbi total en orden descendente

gapminder %>% 
    filter(country %in% c("Peru", "Mexico", "Colombia", "Chile"),
           year %in% c(1967, 1987, 2007)) %>% 
    select(country, pop, gdpPercap, year) %>% 
    mutate(pbi_total = pop * gdpPercap) %>% 
    arrange(year, desc(pbi_total))
## # A tibble: 12 x 5
##    country        pop gdpPercap  year pbi_total
##    <chr>        <dbl>     <dbl> <dbl>     <dbl>
##  1 Mexico    47995559     5755.  1967   2.76e11
##  2 Peru      12132200     5788.  1967   7.02e10
##  3 Colombia  19764027     2679.  1967   5.29e10
##  4 Chile      8858908     5107.  1967   4.52e10
##  5 Mexico    80122492     8688.  1987   6.96e11
##  6 Colombia  30964245     4903.  1987   1.52e11
##  7 Peru      20195924     6361.  1987   1.28e11
##  8 Chile     12463354     5547.  1987   6.91e10
##  9 Mexico   108700891    11978.  2007   1.30e12
## 10 Colombia  44227550     7007.  2007   3.10e11
## 11 Chile     16284741    13172.  2007   2.14e11
## 12 Peru      28674757     7409.  2007   2.12e11

Ejercicio 2

¿Qué continentes tuvieron la mejor y peor expectativa de vida mediana en 1992?: La mejor fue Oceania con 76.945 y la peor fue Africa con 52.429

gapminder %>% 
    filter(year == 1992) %>% 
    select(continent, lifeExp) %>% 
    group_by(continent) %>% 
    summarise(mediana = median(lifeExp)) %>% 
    ungroup() %>% 
    arrange(desc(mediana))
## # A tibble: 5 x 2
##   continent mediana
##   <chr>       <dbl>
## 1 Oceania      76.9
## 2 Europe       75.5
## 3 Americas     69.9
## 4 Asia         68.7
## 5 Africa       52.4

Ejercicio 3

Forma 1

¿Qué continente tuvo el mayor porcentaje de países con expectativa de vida superior a la mediana mundial en 2007?: Oceanía y Europa

gapminder %>% 
    filter(year == 2007) %>% 
    mutate(mediana_mundial = median(lifeExp),
           mayor_que_mediana = lifeExp > mediana_mundial) %>% 
    group_by(continent) %>% 
    summarise(n_paises = n(),
              n_paises_mayor_que_mediana = sum(mayor_que_mediana)) %>% 
    ungroup() %>% 
    mutate(porcentaje_paises_mayores = n_paises_mayor_que_mediana/n_paises*100) %>% 
    arrange(desc(porcentaje_paises_mayores))
## # A tibble: 5 x 4
##   continent n_paises n_paises_mayor_que_mediana porcentaje_paises_mayores
##   <chr>        <int>                      <int>                     <dbl>
## 1 Oceania          2                          2                    100   
## 2 Europe          30                         29                     96.7 
## 3 Americas        25                         17                     68   
## 4 Asia            33                         18                     54.5 
## 5 Africa          52                          5                      9.62

Forma 2

gapminder %>% 
    filter(year == 2007) %>% 
    mutate(mayor_que_mediana = lifeExp > median(lifeExp)) %>% 
    group_by(continent, mayor_que_mediana) %>% 
    summarise(n = n()) %>% 
    mutate(porcentaje = n/sum(n)*100) %>% 
    ungroup() %>% 
    filter(mayor_que_mediana)
## `summarise()` has grouped output by 'continent'. You can override using the `.groups` argument.
## # A tibble: 5 x 4
##   continent mayor_que_mediana     n porcentaje
##   <chr>     <lgl>             <int>      <dbl>
## 1 Africa    TRUE                  5       9.62
## 2 Americas  TRUE                 17      68   
## 3 Asia      TRUE                 18      54.5 
## 4 Europe    TRUE                 29      96.7 
## 5 Oceania   TRUE                  2     100

Ejercicios extra

Para estos ejercicios es importante tener presente las funciones que nos permiten obtener valores de resumen típicos para nuestros datos.

Ejecuta código que te permita responder a las siguientes preguntas (se agrega cómo quedaría la tabla final para que se den una idea):

  1. ¿Qué continente tuvo el mejor PBI per cápita promedio en 1992?: Oceania
## # A tibble: 5 x 2
##   continent pbi_percap_promedio
##   <chr>                   <dbl>
## 1 Oceania                20894.
## 2 Europe                 17062.
## 3 Asia                    8640.
## 4 Americas                8045.
## 5 Africa                  2282.
  1. ¿Qué continente tuvo el peor PBI per cápita mediano en 1952?: África
## # A tibble: 5 x 2
##   continent pbi_percap_mediano
##   <chr>                  <dbl>
## 1 Africa                  987.
## 2 Asia                   1207.
## 3 Americas               3048.
## 4 Europe                 5142.
## 5 Oceania               10298.
  1. ¿Qué continente tuvo el mejor PBI nacional promedio en 1992?: Americas
## # A tibble: 5 x 2
##   continent  pbi_promedio
##   <chr>             <dbl>
## 1 Americas  489899820623.
## 2 Europe    342703247405.
## 3 Asia      307100497486.
## 4 Oceania   236319179826.
## 5 Africa     26256977719.
  1. ¿Cuál es la diferencia entre la expectativa de vida más alta y la más baja para 1952 y la de 2007?: 1952: 43.869 , 2007: 42.990
## # A tibble: 2 x 4
##    year lifeExp_mayor lifeExp_menor diferencia
##   <dbl>         <dbl>         <dbl>      <dbl>
## 1  1952          72.7          28.8       43.9
## 2  2007          82.6          39.6       43.0
  1. ¿Cuál es la diferencia entre la expectativa de vida más alta para 1952 y la de 2007?: 9.933 años
## # A tibble: 1 x 3
##   lifeExp_mayor_2007 lifeExp_mayor_1952 diferencia
##                <dbl>              <dbl>      <dbl>
## 1               82.6               72.7       9.93