Lo primero que primero se debe hacer es instalar las librerías y llamarlas

## 
## 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

Luego, se llama la data diamonds, para empezar a manipularla e inferir de ella. Lo anterior se lleva a cabo gracias a la implementación del siguiente código:

diamonds
## # A tibble: 53,940 x 10
##    carat cut       color clarity depth table price     x     y     z
##    <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
##  1 0.23  Ideal     E     SI2      61.5    55   326  3.95  3.98  2.43
##  2 0.21  Premium   E     SI1      59.8    61   326  3.89  3.84  2.31
##  3 0.23  Good      E     VS1      56.9    65   327  4.05  4.07  2.31
##  4 0.290 Premium   I     VS2      62.4    58   334  4.2   4.23  2.63
##  5 0.31  Good      J     SI2      63.3    58   335  4.34  4.35  2.75
##  6 0.24  Very Good J     VVS2     62.8    57   336  3.94  3.96  2.48
##  7 0.24  Very Good I     VVS1     62.3    57   336  3.95  3.98  2.47
##  8 0.26  Very Good H     SI1      61.9    55   337  4.07  4.11  2.53
##  9 0.22  Fair      E     VS2      65.1    61   337  3.87  3.78  2.49
## 10 0.23  Very Good H     VS1      59.4    61   338  4     4.05  2.39
## # ... with 53,930 more rows

Lo siguiente que se debe hacer es aplicar la función str() y summary(), para conocer aún más nuestra data,

str(diamonds)
## Classes 'tbl_df', 'tbl' and 'data.frame':    53940 obs. of  10 variables:
##  $ carat  : num  0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
##  $ cut    : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
##  $ color  : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
##  $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
##  $ depth  : num  61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
##  $ table  : num  55 61 65 58 58 57 57 55 61 61 ...
##  $ price  : int  326 326 327 334 335 336 336 337 337 338 ...
##  $ x      : num  3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
##  $ y      : num  3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
##  $ z      : num  2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...
summary(diamonds)
##      carat               cut        color        clarity     
##  Min.   :0.2000   Fair     : 1610   D: 6775   SI1    :13065  
##  1st Qu.:0.4000   Good     : 4906   E: 9797   VS2    :12258  
##  Median :0.7000   Very Good:12082   F: 9542   SI2    : 9194  
##  Mean   :0.7979   Premium  :13791   G:11292   VS1    : 8171  
##  3rd Qu.:1.0400   Ideal    :21551   H: 8304   VVS2   : 5066  
##  Max.   :5.0100                     I: 5422   VVS1   : 3655  
##                                     J: 2808   (Other): 2531  
##      depth           table           price             x         
##  Min.   :43.00   Min.   :43.00   Min.   :  326   Min.   : 0.000  
##  1st Qu.:61.00   1st Qu.:56.00   1st Qu.:  950   1st Qu.: 4.710  
##  Median :61.80   Median :57.00   Median : 2401   Median : 5.700  
##  Mean   :61.75   Mean   :57.46   Mean   : 3933   Mean   : 5.731  
##  3rd Qu.:62.50   3rd Qu.:59.00   3rd Qu.: 5324   3rd Qu.: 6.540  
##  Max.   :79.00   Max.   :95.00   Max.   :18823   Max.   :10.740  
##                                                                  
##        y                z         
##  Min.   : 0.000   Min.   : 0.000  
##  1st Qu.: 4.720   1st Qu.: 2.910  
##  Median : 5.710   Median : 3.530  
##  Mean   : 5.735   Mean   : 3.539  
##  3rd Qu.: 6.540   3rd Qu.: 4.040  
##  Max.   :58.900   Max.   :31.800  
## 

En la primera clase del taller se hizo una consulta a la data Diamonds, en la cual se usó el comando filter para mostrar las observaciones que contienen un corte ideal y un color E, además dichas observaciones se agruparon por claridad, gracias al empleo de comando group__by(). Luego, con la ayuda del comando summarize() se crearon dos columnas nuevas, de las cuales la primera contenía el promedio del precio de las observaciones previamente obtenidas y a segunda, la suma del precio. Por último, con la ayuda del comando arrange(), se acomodó de menor a mayor las cantidades referentes a la suma. El resultado de dicha consulta es a siguiente:

diamonds%>%filter(cut=="Ideal",color=="E") %>%  group_by(clarity)%>%
  summarize(precio_promedio=mean(price), suma = sum(price), conteo = n())%>%
  arrange(suma)
## # A tibble: 8 x 4
##   clarity precio_promedio    suma conteo
##   <ord>             <dbl>   <int>  <int>
## 1 I1                3559.   64069     18
## 2 IF                3259.  257456     79
## 3 VVS1              2206.  738849    335
## 4 VS1               2176. 1290248    593
## 5 VVS2              2556. 1296062    507
## 6 SI2               3891. 1825021    469
## 7 SI1               2884. 2208997    766
## 8 VS2               2163. 2457536   1136

Luego de realizar la consulta anterior, se generó una serie de gráficos que fueron utilizados para inferir acertadamente sobre la data Diamonds. El primer gráfico que se generó fue un scalerplot, en el cual se puede apreciar el comportamiento del, peso de cada uno de los diamantes vs su precio.

ggplot(diamonds, aes(x = carat, y = price))+  
  geom_point()+
  labs(title = "Gráfico de dispersión de peso del diamante versus su precio") +
  xlab("Peso en Quilates del diamante") +
  ylab("Precio del diamante")

El segundo es un gráfico de densidad que da a conocer la forma en la que se distribuye la variable carat, para los distintos tipos de corte de los diamantes estudiados.

 ggplot(diamonds) + 
  geom_density(aes(x = carat, fill = cut), position = 'stack') + 
  facet_grid(cut~., scales = 'free') +
  xlab("Carat") + 
  ylab("Frecuencia") + 
  ggtitle("Distribución de la variable Carat (Densidad) para los distintos Cut") +
  theme_minimal() 

El siguiente es un gráfico de violin que destaca la relación entre el volumen de cada uno de los diamantes estudiados y el tip de corte de los mismos. Para lograr estudiar el volumen de dichos diamantes de creó una nueva variable (diamonds2)

diamonds2 <- diamonds %>% mutate(volumen = x*y*z) %>% filter(volumen < 3000)
ggplot(diamonds2, aes(x=cut, y=volumen)) +
  geom_violin(aes(fill = cut))+
  geom_boxplot(alpha = 0.1)+
  labs(title = "Gráfico de violín y boxplot del volumen de los diamantes por tipo de corte")+
  xlab("Corte") +
  ylab("Volumen") +
  theme_bw()

Por último, se confeccionó un gráfico en donde se brinda información acerca de la distribucióon que siguen los datos de la variable carat, tomando en cuenta el tipo de corte de los diamantes.

ggplot(diamonds) + 
  geom_histogram(bins = 50, aes(x = carat, fill = cut)) + 
  xlab("Carat") + 
  ylab("Frecuencia") + 
  ggtitle("Distribución de la variable Carat") +
  theme_minimal()

Referencias Bibliográficas

Delgado, R. (15 de Octubre de 2018). Introducción a la Graficación con ggplot2 [Mensaje de un Blog]. Recuperado de:https://rpubs.com/rdelgado/429190

Sandí, L.(9 de setiembre de 2019). Demostración. Taller de R. Recuperado de: file:///F:/TALLER%20R-20191014T212920Z-001/TALLER%20R/Ejemplo1.html