Este taller consiste en aplicar las funciones de la librería dplyr y elaborar algunas gráficas para extraer información de la base de datos diamonds de la librería ggplot2, y contestar las siguientes preguntas:

1. Cargar las librerías

# carga una colección de librerías incluyendo dplyr y ggplot2
library(tidyverse) 
## ── Attaching packages ────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 3.2.1     ✔ purrr   0.3.2
## ✔ tibble  2.1.3     ✔ dplyr   0.8.3
## ✔ tidyr   0.8.3     ✔ stringr 1.4.0
## ✔ readr   1.3.1     ✔ forcats 0.4.0
## ── Conflicts ───────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
attach(diamonds)
head(diamonds)

2. Revisar la descripción de la base diamonds con la instrucción:

?diamonds

¿Qué variable tiene la base y qué tipo de variables son?

3. Revisar las variables ordinales de la base con la instrucción:

unique(cut)
## [1] Ideal     Premium   Good      Very Good Fair     
## Levels: Fair < Good < Very Good < Premium < Ideal

Realizar lo mismo para las variables: color y clarity.

Las siguientes fotos muestran muestran diferentes colores y claridades de los diamantes.

Diferentes colores

Diferentes colores

Diferentes claridades

Diferentes claridades

4. Tabule la variable color con la función count de la librería dplyr y elabore la gráfica de barras

diamonds %>% count(color)
plot(color, col = rainbow(7))

5. Tabule la variable cut con la función count de la librería dplyr y elabore la gráfica de barras

diamonds %>% count(cut)
plot(cut, col = rainbow(5))

6. Tabule la variable cut cruzada con la variable color (tabla de contingencia) y elabore la gráfica de barras

diamonds %>% group_by(cut, color) %>% 
  count() %>%
  spread(cut, n)
TCC <- table(cut,color)
barplot(TCC, col =rainbow(5), legend = rownames(TCC))

7. Elabore la gráfica de dispersión entre carat y price usando la función plot.

plot(carat, price)

¿Te gusta la apariencia de esta gráfica? ¿Cómo crees que se puede mejorar? ¿Crees que se pueda agregar otra dimensión (variable) a esta gráfica?

8. Calcule el precio promedio de los diamantes chicos (menores de medio kilate), los dimantes medianos (entre medio y un kilate) y diamantes grandes (más de un kilate)

diamonds %>% filter(carat < 0.5) %>% summarise(precio.chicos = mean(price))
diamonds %>% filter(between(carat, 0.5, 1)) %>% summarise(precio.medianos = mean(price))
diamonds %>% filter(carat > 1) %>% summarise(precio.grandes = mean(price))

¿Se te ocurre una forma de calcular los anteriores valores más eficientemente?

9. Calcule el precio promedio de los diamantes chicos para los diferentes cortes

diamonds %>% group_by(cut) %>% summarise(mean(price))

¿Por qué los diamantes de mejor corte en promedio son más baratos?

10. Calcule el precio promedio de los diamantes chicos para los diferentes cortes

diamonds %>% filter(carat < 0.5) %>% 
  group_by(cut) %>% summarise(mean(price))
diamonds %>% filter(carat > 1) %>% 
  group_by(cut) %>% summarise(mean(price))

11. Elabore gráficas de cajas para el precio para los diferentes colores

boxplot(price ~ color)

12. Elabore gráficas de cajas para el precio para los diferentes cortes

boxplot(price ~ cut)