Para la realización de esto, requerias cargar los siguientes
paquetes: gapminder
, dplyr
,
ggplot
El signo de pipe ‘%>%’ es un comando del paquete
dplyr
y quiere decir “toma todo aquello que esta antes
de esto, e incluye la información que voy a agregar”. En el caso
que veremos sera: “considera toda la base de datos
gapminder
y procede a filtrar solo aquellos casos que
tengan el año 2002”.
gapminder %>%
filter(year == 2002)
## # A tibble: 142 x 6
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Afghanistan Asia 2002 42.1 25268405 727.
## 2 Albania Europe 2002 75.7 3508512 4604.
## 3 Algeria Africa 2002 71.0 31287142 5288.
## 4 Angola Africa 2002 41.0 10866106 2773.
## 5 Argentina Americas 2002 74.3 38331121 8798.
## 6 Australia Oceania 2002 80.4 19546792 30688.
## 7 Austria Europe 2002 79.0 8148312 32418.
## 8 Bahrain Asia 2002 74.8 656397 23404.
## 9 Bangladesh Asia 2002 62.0 135656790 1136.
## 10 Belgium Europe 2002 78.3 10311970 30486.
## # i 132 more rows
Tambien podemos, pedirle “solo considera a Peru”.
gapminder %>%
filter(country == "Peru")
## # A tibble: 12 x 6
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Peru Americas 1952 43.9 8025700 3759.
## 2 Peru Americas 1957 46.3 9146100 4245.
## 3 Peru Americas 1962 49.1 10516500 4957.
## 4 Peru Americas 1967 51.4 12132200 5788.
## 5 Peru Americas 1972 55.4 13954700 5938.
## 6 Peru Americas 1977 58.4 15990099 6281.
## 7 Peru Americas 1982 61.4 18125129 6435.
## 8 Peru Americas 1987 64.1 20195924 6361.
## 9 Peru Americas 1992 66.5 22430449 4446.
## 10 Peru Americas 1997 68.4 24748122 5838.
## 11 Peru Americas 2002 69.9 26769436 5909.
## 12 Peru Americas 2007 71.4 28674757 7409.
De otro lado, si queremos conocer datos con determinadas caracterÃsticas combinadas podemos pedir estas caracterÃsticas separando mediante comas.
gapminder %>%
filter(year == "2002", country == "Peru")
## # A tibble: 1 x 6
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Peru Americas 2002 69.9 26769436 5909.
El comando arrange
me permitirá visualizar los datos
que me interesan. Por default me dará los datos ordenados de menor a
mayor.
gapminder %>%
arrange(lifeExp)
## # A tibble: 1,704 x 6
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Rwanda Africa 1992 23.6 7290203 737.
## 2 Afghanistan Asia 1952 28.8 8425333 779.
## 3 Gambia Africa 1952 30 284320 485.
## 4 Angola Africa 1952 30.0 4232095 3521.
## 5 Sierra Leone Africa 1952 30.3 2143249 880.
## 6 Afghanistan Asia 1957 30.3 9240934 821.
## 7 Cambodia Asia 1977 31.2 6978607 525.
## 8 Mozambique Africa 1952 31.3 6446316 469.
## 9 Sierra Leone Africa 1957 31.6 2295678 1004.
## 10 Burkina Faso Africa 1952 32.0 4469979 543.
## # i 1,694 more rows
Si deseo que me brinde datos de mayor a menor, debo especificarlo con
el comando descen
gapminder %>%
arrange(desc(lifeExp))
## # A tibble: 1,704 x 6
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Japan Asia 2007 82.6 127467972 31656.
## 2 Hong Kong, China Asia 2007 82.2 6980412 39725.
## 3 Japan Asia 2002 82 127065841 28605.
## 4 Iceland Europe 2007 81.8 301931 36181.
## 5 Switzerland Europe 2007 81.7 7554661 37506.
## 6 Hong Kong, China Asia 2002 81.5 6762476 30209.
## 7 Australia Oceania 2007 81.2 20434176 34435.
## 8 Spain Europe 2007 80.9 40448191 28821.
## 9 Sweden Europe 2007 80.9 9031088 33860.
## 10 Israel Asia 2007 80.7 6426679 25523.
## # i 1,694 more rows
Si combino, varias indicaciones podrÃa tener el siguiente pseudo
código: “Toma todo aquello que está antes de este sÃmbolo pipe
(%>%), toda la base de datos de gapminder
, luego filtra
solo los años 1957 y, posteriormeente, ordena esa nueva data en orden
descendiente según su población”
gapminder %>%
filter(year == 1957) %>%
arrange(desc(pop))
## # A tibble: 142 x 6
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 China Asia 1957 50.5 637408000 576.
## 2 India Asia 1957 40.2 409000000 590.
## 3 United States Americas 1957 69.5 171984000 14847.
## 4 Japan Asia 1957 65.5 91563009 4318.
## 5 Indonesia Asia 1957 39.9 90124000 859.
## 6 Germany Europe 1957 69.1 71019069 10188.
## 7 Brazil Americas 1957 53.3 65551171 2487.
## 8 United Kingdom Europe 1957 70.4 51430000 11283.
## 9 Bangladesh Asia 1957 39.3 51365468 662.
## 10 Italy Europe 1957 67.8 49182000 6249.
## # i 132 more rows
Si deseamos obtener datos de la base de datos podemos utilizar
diferentes funciones, tales como mean
, sum
,
median
, min
, max
.
gapminder %>%
filter(year == 2002) %>%
summarize(meanLifeExp = mean(lifeExp), totalPop = sum(pop))
## # A tibble: 1 x 2
## meanLifeExp totalPop
## <dbl> <dbl>
## 1 65.7 5886977579
Podemos agrupar los datos según año
gapminder %>%
filter(continent == "Americas")%>%
group_by(year) %>%
summarize(meanLifeExp = mean(lifeExp), totalPop = sum(pop))
## # A tibble: 12 x 3
## year meanLifeExp totalPop
## <int> <dbl> <int>
## 1 1952 53.3 345152446
## 2 1957 56.0 386953916
## 3 1962 58.4 433270254
## 4 1967 60.4 480746623
## 5 1972 62.4 529384210
## 6 1977 64.4 578067699
## 7 1982 66.2 630290920
## 8 1987 68.1 682753971
## 9 1992 69.6 739274104
## 10 1997 71.2 796900410
## 11 2002 72.4 849772762
## 12 2007 73.6 898871184
O segun año y continente
gapminder %>%
group_by(year, continent)
## # A tibble: 1,704 x 6
## # Groups: year, continent [60]
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Afghanistan Asia 1952 28.8 8425333 779.
## 2 Afghanistan Asia 1957 30.3 9240934 821.
## 3 Afghanistan Asia 1962 32.0 10267083 853.
## 4 Afghanistan Asia 1967 34.0 11537966 836.
## 5 Afghanistan Asia 1972 36.1 13079460 740.
## 6 Afghanistan Asia 1977 38.4 14880372 786.
## 7 Afghanistan Asia 1982 39.9 12881816 978.
## 8 Afghanistan Asia 1987 40.8 13867957 852.
## 9 Afghanistan Asia 1992 41.7 16317921 649.
## 10 Afghanistan Asia 1997 41.8 22227415 635.
## # i 1,694 more rows
gapminder %>%
mutate(gdp = gdpPercap*pop)
## # A tibble: 1,704 x 7
## country continent year lifeExp pop gdpPercap gdp
## <fct> <fct> <int> <dbl> <int> <dbl> <dbl>
## 1 Afghanistan Asia 1952 28.8 8425333 779. 6567086330.
## 2 Afghanistan Asia 1957 30.3 9240934 821. 7585448670.
## 3 Afghanistan Asia 1962 32.0 10267083 853. 8758855797.
## 4 Afghanistan Asia 1967 34.0 11537966 836. 9648014150.
## 5 Afghanistan Asia 1972 36.1 13079460 740. 9678553274.
## 6 Afghanistan Asia 1977 38.4 14880372 786. 11697659231.
## 7 Afghanistan Asia 1982 39.9 12881816 978. 12598563401.
## 8 Afghanistan Asia 1987 40.8 13867957 852. 11820990309.
## 9 Afghanistan Asia 1992 41.7 16317921 649. 10595901589.
## 10 Afghanistan Asia 1997 41.8 22227415 635. 14121995875.
## # i 1,694 more rows
Solo queremos usar datos del 2020, entonces crearemos una nueva base de datos. Eso lo haremos con ‘asignar (<-)’. Un gráfico en ggplot tiene tres partes: 1. la base de datos que estamos usando, 2. la estetica de tu gráfico (ej. cuál es tu variable x y tu variable y) y 3. es el tipo de objeto geometrico que le estás agregando al gráfico (va en otra capa).
library(gapminder)
library(dplyr)
gapminder_2002 <- gapminder %>%
filter(year == 2002)
geom_point()
elabora un diagrama de dispersión.
ggplot(gapminder_2002, aes(x = pop, y = gdpPercap)) +
geom_point()
En situaciones como esta, será necesario transformar las variables a
su logaritmo. Para especificar que queremos que el eje x esté
transformado en una escala logaritmica, deberemos especificarlo en el
codigo con scale_x_log10()
ggplot(gapminder_2002, aes(x = pop, y = gdpPercap)) +
geom_point()+
scale_x_log10()+
scale_y_log10()
Si deseamos graficarlo, se requiere crear un objeto
espvida <- gapminder %>%
group_by(year, continent) %>%
summarize(meanLifeExp = mean(lifeExp), totalPop = sum(pop))
## `summarise()` has grouped output by 'year'. You can override using the
## `.groups` argument.
ggplot(espvida, aes(x = year, y = meanLifeExp))+
geom_point()+
expand_limits(y=0)
Puedes
generar diferentes tipos de gráficos, solo cambiando la base
geométrica en la que desees que se presente. Por ejemplo, si deseas: -
gráfico de lineas, reemplazas por
geom_line()
- gráfico
de barras, reemplazas por geom_col()
Podemos querer representar diferentes variables con el color, asÃ
como el tamaño de los puntos size
ggplot(gapminder_2002, aes(x = pop, y = gdpPercap, color = continent, size = pop)) +
geom_point()+
scale_x_log10()+
scale_y_log10()
También puede usarse
expand_limits(y=0)' para expandir los lÃmites del gráfico o
facet_wrap(~)`
para facetados que generan más subdivisiones en la
representación de los gráficos (ej. comparando años o
continentes)
Es un gráfico que nos ayuda a conocer la distribución de los casos,
cuando tenemos variables cuantitativas. Puedes arreglar la estética del
histograma con algunos comandos especificos como
binwith()
gapminder_2002 <- gapminder %>%
filter(year == 2002) %>%
mutate(pop_by_mil = pop/1000000)
ggplot(gapminder_2002, aes(x = pop_by_mil)) +
geom_histogram(bins = 50)
Sirve para comparar diferentes variables cualitativas, en función de una variable cuantitativa.
gapminder_2002 <- gapminder %>%
filter(year == 2002)
ggplot(gapminder_2002, aes(x=continent, y=gdpPercap))+
geom_boxplot()+
scale_y_log10() +
ggtitle("Comparando el PBI per capita de continentes")
Ejercicio 1: ¿Como haras para conocer el pais con
mayor gpd per capita de las ‘Americas’, usando filter
,
mutate
y arrange
?
Ejercicio 2: Elabora un gráfico de dispersion en el cual distingues por color los continentes y el tamaño de cada calculo refiere a la esperanza de vida ‘lifeExp’.