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