Clase 4.5

group_by: cambiar el dominio de acción de los verbos

¿Qué pasa si queremos el promedio de lifeExp pero ahora por continente? ¿o filtrar observaciones que cumplan cierta condici+ón lógica pero para cada uno de los distintos años (year) de nuestra data gapminder?

group_by actuará cambiando el dominio en que se ejecuta cada verbos.Necesitamos agrupar (group_by) por continente (continent) para ejecutar el verbo summarise y crear la variable expectativa de vida promedio (avgLifeExp)

#cambiamos el dominio de jecución (o análisis de los verbos)
por_continente <- group_by(gapminder, continent)
#en vez de aplicar los verbhos sobre gapminder, lo hacemos sobre
#por_continente
summarise(por_continente, avgLifeExp = mean(lifeExp))

tabla por bloques (composición con los verbos)

ggplot(data =
        mutate(
               select(
                      filter(
                             gapminder, 
                             country == "Chile"),
                      year,
                      pop,
                      gdpPercap
                      ),
               gdpMillion = (gdpPercap * pop) / 1e6
              )
      ) +
  geom_line(mapping = aes(x = year, y = gdpMillion))  

Resumen de la composición (asignar variables a los verbos)

chile <- filter(gapminder, country == "Chile")
chile2 <- select(chile, year, pop, gdpPercap)
chile3 <- mutate(chile2, gdpMillion = (gdpPercap * pop) / 1e6)
ggplot(data = chile3) +
  geom_line(mapping = aes(x = year, y = gdpMillion))

^ Esta operación determina en el recuadro de Data las nuevas variables (chile, chile2, chile3)

Clase 5

Análisis exploratorio de datos

Primero, cargar paquetes necesarios para el documento:

library(ggplot2)
library(dplyr)
#paquete de data:
library(titanic)

Exploramos la data de titanic

df <- dplyr::bind_rows(titanic::titanic_train,
                       titanic::titanic_test)
glimpse(df)
Observations: 1,309
Variables: 12
$ PassengerId <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2...
$ Survived    <int> 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, ...
$ Pclass      <int> 3, 1, 3, 1, 3, 3, 1, 3, 3, 2, 3, 1, 3, 3, 3, 2, 3, 2, 3, 3, 2, 2, 3, 1, ...
$ Name        <chr> "Braund, Mr. Owen Harris", "Cumings, Mrs. John Bradley (Florence Briggs ...
$ Sex         <chr> "male", "female", "female", "female", "male", "male", "male", "male", "f...
$ Age         <dbl> 22, 38, 26, 35, 35, NA, 54, 2, 27, 14, 4, 58, 20, 39, 14, 55, 2, NA, 31,...
$ SibSp       <int> 1, 1, 0, 1, 0, 0, 0, 3, 0, 1, 1, 0, 0, 1, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, ...
$ Parch       <int> 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 0, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, ...
$ Ticket      <chr> "A/5 21171", "PC 17599", "STON/O2. 3101282", "113803", "373450", "330877...
$ Fare        <dbl> 7.2500, 71.2833, 7.9250, 53.1000, 8.0500, 8.4583, 51.8625, 21.0750, 11.1...
$ Cabin       <chr> "", "C85", "", "C123", "", "", "E46", "", "", "", "G6", "C103", "", "", ...
$ Embarked    <chr> "S", "C", "S", "S", "S", "Q", "S", "S", "S", "C", "S", "S", "S", "S", "S...

En variable categórica: geom_bar Distribución de pasajeros por sexo que hay en los datos.

ggplot(data = df) +
  geom_bar(mapping = aes(x = Sex), fill = "pink", colour = "orange") +
  theme_bw() + 
  ggtitle("Para observar la variación de una variable categórica: geom_bar")

Calcular observaciones

count(df, Sex)
#crtl+ shift + M = operador %>%
df %>%
  select(Fare)

Fijar estos valores en un eje (pendiente)

ggplot(data = df)
#head nos arroja las primeras 6 observaciones de la tabla que nos entrega count (df, Fare)
head(count(df, Fare))
df %>% 
  count(Fare) %>% 
  ggplot() +
  geom_point(mapping = aes(x = Fare, y = 0, size = n),
                alpha = 1 / 5,
                shape = 21,
                fill = "red",
                colour = "black") +
  theme_bw()

Definición de intervalos de tarifas

#Crear intervalos y clasificar a cual de estos pertenece los valores de una variable continua.
df %>% 
  select(Fare) %>% 
  mutate(intervalos = cut_width(Fare, 10))

Histograma = gráfico de barras para variables continuas (histogram)

ggplot(data = df) + 
  geom_histogram(mapping = aes(x = Fare), binwidth = 10, fill = "orange", colour = "black") +
  theme_bw() +
  ggtitle("Para observar la variación de una variable continua: geom_histogram")

Inspeccionar covariacion entre variables Entre variable categórica y continua: geom_freqpoly

ggplot(data = df) +
  geom_histogram(mapping = aes(x = Fare, fill = Sex), colour = "black") +
  facet_wrap(~ Sex) +
  theme_bw()

ggplot(data = df) +
  geom_freqpoly(mapping = aes(x = Fare, colour = factor(Pclass)),
                binwidth = 10,
                size = 0.8) +
  theme_bw() +
  ggtitle("Para compara distintas distribuciones: geom_freqpoly.")

Tarea prox. semana Explicar gráficos: comparar según variables empleadas en el gráfico Modo de “reportaje” (informar qué pasó)

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojQ2xhc2UgNC41DQoNCmdyb3VwX2J5OiBjYW1iaWFyIGVsIGRvbWluaW8gZGUgYWNjafNuIGRlIGxvcyB2ZXJib3MNCg0Kv1F16SBwYXNhIHNpIHF1ZXJlbW9zIGVsIHByb21lZGlvIGRlIGxpZmVFeHAgcGVybyBhaG9yYSBwb3IgY29udGluZW50ZT8gv28gZmlsdHJhciBvYnNlcnZhY2lvbmVzIHF1ZSBjdW1wbGFuIGNpZXJ0YSBjb25kaWNpK/NuIGzzZ2ljYSBwZXJvIHBhcmEgY2FkYSB1bm8gZGUgbG9zIGRpc3RpbnRvcyBh8W9zICh5ZWFyKSBkZSBudWVzdHJhIGRhdGEgZ2FwbWluZGVyPw0KDQpncm91cF9ieSBhY3R1YXLhIGNhbWJpYW5kbyBlbCBkb21pbmlvIGVuIHF1ZSBzZSBlamVjdXRhIGNhZGEgdmVyYm9zLk5lY2VzaXRhbW9zIGFncnVwYXIgKihncm91cF9ieSkqIHBvciBjb250aW5lbnRlICooY29udGluZW50KSogcGFyYSBlamVjdXRhciBlbCB2ZXJibyAqc3VtbWFyaXNlKiB5IGNyZWFyIGxhIHZhcmlhYmxlIGV4cGVjdGF0aXZhIGRlIHZpZGEgcHJvbWVkaW8gKihhdmdMaWZlRXhwKSoNCg0KDQpgYGB7cn0NCiNjYW1iaWFtb3MgZWwgZG9taW5pbyBkZSBqZWN1Y2nzbiAobyBhbuFsaXNpcyBkZSBsb3MgdmVyYm9zKQ0KcG9yX2NvbnRpbmVudGUgPC0gZ3JvdXBfYnkoZ2FwbWluZGVyLCBjb250aW5lbnQpDQojZW4gdmV6IGRlIGFwbGljYXIgbG9zIHZlcmJob3Mgc29icmUgZ2FwbWluZGVyLCBsbyBoYWNlbW9zIHNvYnJlDQojcG9yX2NvbnRpbmVudGUNCnN1bW1hcmlzZShwb3JfY29udGluZW50ZSwgYXZnTGlmZUV4cCA9IG1lYW4obGlmZUV4cCkpDQpgYGANCg0KdGFibGEgcG9yIGJsb3F1ZXMgKGNvbXBvc2ljafNuIGNvbiBsb3MgdmVyYm9zKQ0KDQpgYGB7cn0NCmdncGxvdChkYXRhID0NCiAgICAgICAgbXV0YXRlKA0KICAgICAgICAgICAgICAgc2VsZWN0KA0KICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FwbWluZGVyLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeSA9PSAiQ2hpbGUiKSwNCiAgICAgICAgICAgICAgICAgICAgICB5ZWFyLA0KICAgICAgICAgICAgICAgICAgICAgIHBvcCwNCiAgICAgICAgICAgICAgICAgICAgICBnZHBQZXJjYXANCiAgICAgICAgICAgICAgICAgICAgICApLA0KICAgICAgICAgICAgICAgZ2RwTWlsbGlvbiA9IChnZHBQZXJjYXAgKiBwb3ApIC8gMWU2DQogICAgICAgICAgICAgICkNCiAgICAgICkgKw0KICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0geWVhciwgeSA9IGdkcE1pbGxpb24pKSAgDQpgYGANCg0KUmVzdW1lbiBkZSBsYSBjb21wb3NpY2nzbiAoYXNpZ25hciB2YXJpYWJsZXMgYSBsb3MgdmVyYm9zKQ0KDQpgYGB7cn0NCmNoaWxlIDwtIGZpbHRlcihnYXBtaW5kZXIsIGNvdW50cnkgPT0gIkNoaWxlIikNCmNoaWxlMiA8LSBzZWxlY3QoY2hpbGUsIHllYXIsIHBvcCwgZ2RwUGVyY2FwKQ0KY2hpbGUzIDwtIG11dGF0ZShjaGlsZTIsIGdkcE1pbGxpb24gPSAoZ2RwUGVyY2FwICogcG9wKSAvIDFlNikNCmdncGxvdChkYXRhID0gY2hpbGUzKSArDQogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSB5ZWFyLCB5ID0gZ2RwTWlsbGlvbikpDQpgYGANCg0KXiBFc3RhIG9wZXJhY2nzbiBkZXRlcm1pbmEgZW4gZWwgcmVjdWFkcm8gZGUgRGF0YSBsYXMgbnVldmFzIHZhcmlhYmxlcyAoY2hpbGUsIGNoaWxlMiwgY2hpbGUzKQ0KDQoNCiNDbGFzZSA1DQoNCiMjI0Fu4Wxpc2lzIGV4cGxvcmF0b3JpbyBkZSBkYXRvcw0KDQpQcmltZXJvLCBjYXJnYXIgcGFxdWV0ZXMgbmVjZXNhcmlvcyBwYXJhIGVsIGRvY3VtZW50bzoNCg0KYGBge3J9DQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGRwbHlyKQ0KI3BhcXVldGUgZGUgZGF0YToNCmxpYnJhcnkodGl0YW5pYykNCmBgYA0KDQpFeHBsb3JhbW9zIGxhIGRhdGEgZGUgKnRpdGFuaWMqDQoNCmBgYHtyfQ0KZGYgPC0gZHBseXI6OmJpbmRfcm93cyh0aXRhbmljOjp0aXRhbmljX3RyYWluLA0KICAgICAgICAgICAgICAgICAgICAgICB0aXRhbmljOjp0aXRhbmljX3Rlc3QpDQpnbGltcHNlKGRmKQ0KYGBgDQoNCkVuIHZhcmlhYmxlIGNhdGVn83JpY2E6IGdlb21fYmFyDQpEaXN0cmlidWNp824gZGUgcGFzYWplcm9zIHBvciBzZXhvIHF1ZSBoYXkgZW4gbG9zIGRhdG9zLg0KDQpgYGB7cn0NCmdncGxvdChkYXRhID0gZGYpICsNCiAgZ2VvbV9iYXIobWFwcGluZyA9IGFlcyh4ID0gU2V4KSwgZmlsbCA9ICJwaW5rIiwgY29sb3VyID0gIm9yYW5nZSIpICsNCiAgdGhlbWVfYncoKSArIA0KICBnZ3RpdGxlKCJQYXJhIG9ic2VydmFyIGxhIHZhcmlhY2nzbiBkZSB1bmEgdmFyaWFibGUgY2F0ZWfzcmljYTogZ2VvbV9iYXIiKQ0KYGBgDQoNCkNhbGN1bGFyIG9ic2VydmFjaW9uZXMNCg0KYGBge3J9DQpjb3VudChkZiwgU2V4KQ0KYGBgDQoNCmBgYHtyfQ0KI2NydGwrIHNoaWZ0ICsgTSA9IG9wZXJhZG9yICU+JQ0KZGYgJT4lDQogIHNlbGVjdChGYXJlKQ0KYGBgDQoNCkZpamFyIGVzdG9zIHZhbG9yZXMgZW4gdW4gZWplIChwZW5kaWVudGUpDQoNCmBgYHtyfQ0KZ2dwbG90KGRhdGEgPSBkZikNCmBgYA0KDQpgYGB7cn0NCiNoZWFkIG5vcyBhcnJvamEgbGFzIHByaW1lcmFzIDYgb2JzZXJ2YWNpb25lcyBkZSBsYSB0YWJsYSBxdWUgbm9zIGVudHJlZ2EgY291bnQgKGRmLCBGYXJlKQ0KaGVhZChjb3VudChkZiwgRmFyZSkpDQpgYGANCg0KYGBge3J9DQpkZiAlPiUgDQogIGNvdW50KEZhcmUpICU+JSANCiAgZ2dwbG90KCkgKw0KICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IEZhcmUsIHkgPSAwLCBzaXplID0gbiksDQogICAgICAgICAgICAgICAgYWxwaGEgPSAxIC8gNSwNCiAgICAgICAgICAgICAgICBzaGFwZSA9IDIxLA0KICAgICAgICAgICAgICAgIGZpbGwgPSAicmVkIiwNCiAgICAgICAgICAgICAgICBjb2xvdXIgPSAiYmxhY2siKSArDQogIHRoZW1lX2J3KCkNCmBgYCAgICAgICAgICAgDQoNCkRlZmluaWNp824gZGUgaW50ZXJ2YWxvcyBkZSB0YXJpZmFzDQoNCmBgYHtyfQ0KI0NyZWFyIGludGVydmFsb3MgeSBjbGFzaWZpY2FyIGEgY3VhbCBkZSBlc3RvcyBwZXJ0ZW5lY2UgbG9zIHZhbG9yZXMgZGUgdW5hIHZhcmlhYmxlIGNvbnRpbnVhLg0KZGYgJT4lIA0KICBzZWxlY3QoRmFyZSkgJT4lIA0KICBtdXRhdGUoaW50ZXJ2YWxvcyA9IGN1dF93aWR0aChGYXJlLCAxMCkpDQpgYGANCg0KSGlzdG9ncmFtYSA9IGdy4WZpY28gZGUgYmFycmFzIHBhcmEgdmFyaWFibGVzIGNvbnRpbnVhcyAoaGlzdG9ncmFtKQ0KDQpgYGB7cn0NCmdncGxvdChkYXRhID0gZGYpICsgDQogIGdlb21faGlzdG9ncmFtKG1hcHBpbmcgPSBhZXMoeCA9IEZhcmUpLCBiaW53aWR0aCA9IDEwLCBmaWxsID0gIm9yYW5nZSIsIGNvbG91ciA9ICJibGFjayIpICsNCiAgdGhlbWVfYncoKSArDQogIGdndGl0bGUoIlBhcmEgb2JzZXJ2YXIgbGEgdmFyaWFjafNuIGRlIHVuYSB2YXJpYWJsZSBjb250aW51YTogZ2VvbV9oaXN0b2dyYW0iKQ0KYGBgDQoNCkluc3BlY2Npb25hciBjb3ZhcmlhY2lvbiBlbnRyZSB2YXJpYWJsZXMNCkVudHJlIHZhcmlhYmxlIGNhdGVn83JpY2EgeSBjb250aW51YTogZ2VvbV9mcmVxcG9seQ0KDQpgYGB7cn0NCmdncGxvdChkYXRhID0gZGYpICsNCiAgZ2VvbV9oaXN0b2dyYW0obWFwcGluZyA9IGFlcyh4ID0gRmFyZSwgZmlsbCA9IFNleCksIGNvbG91ciA9ICJibGFjayIpICsNCiAgZmFjZXRfd3JhcCh+IFNleCkgKw0KICB0aGVtZV9idygpDQpgYGANCg0KYGBge3J9DQpnZ3Bsb3QoZGF0YSA9IGRmKSArDQogIGdlb21fZnJlcXBvbHkobWFwcGluZyA9IGFlcyh4ID0gRmFyZSwgY29sb3VyID0gZmFjdG9yKFBjbGFzcykpLA0KICAgICAgICAgICAgICAgIGJpbndpZHRoID0gMTAsDQogICAgICAgICAgICAgICAgc2l6ZSA9IDAuOCkgKw0KICB0aGVtZV9idygpICsNCiAgZ2d0aXRsZSgiUGFyYSBjb21wYXJhIGRpc3RpbnRhcyBkaXN0cmlidWNpb25lczogZ2VvbV9mcmVxcG9seS4iKQ0KYGBgDQoNClRhcmVhIHByb3guIHNlbWFuYQ0KRXhwbGljYXIgZ3LhZmljb3M6IGNvbXBhcmFyIHNlZ/puIHZhcmlhYmxlcyBlbXBsZWFkYXMgZW4gZWwgZ3LhZmljbw0KTW9kbyBkZSAicmVwb3J0YWplIiAoaW5mb3JtYXIgcXXpIHBhc/MpDQo=