El presente estudio trata de analizar el dataset público Diamonds a través del uso de paquetes avanzados en lenguaje R.
El dataset Diamonds forma parte del paquete ggplot2 y contiene información de precio, características del corte, color, quilates, etc… de casi 54.000 diamantes.
El estudio se divide en dos secciones: la primera de preparación y carga de los datos y la segunda referente a los distintos análisis que se llevan a cabo.
A su vez los análisis se subdividen en: análisis numéricos usando la sintaxis de data.table y análisis gráficos usando la sintaxis de ggplot2.
Carga de los paquetes tidyverse, data.table y ggplot2:
library("tidyverse", lib.loc="~/R/win-library/3.5")
## -- Attaching packages -------------------------------------- tidyverse 1.2.1 --
## v ggplot2 3.2.0 v purrr 0.3.2
## v tibble 2.1.3 v dplyr 0.8.2
## v tidyr 0.8.3 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.4.0
## -- Conflicts ----------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library("data.table", lib.loc="~/R/win-library/3.5")
##
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
##
## between, first, last
## The following object is masked from 'package:purrr':
##
## transpose
library("ggplot2", lib.loc="~/R/win-library/3.5")
Carga del conjunto Diamonds:
data(diamonds)
Análisis de los datos usando la sintaxis de data.table:
Definiendo el data.table diamdt
diamdt=data.table(diamonds)
max(price) en función de los quilates carathead(diamdt[,.(precio_max=max(price)), by=carat][order(-precio_max)],10)
## carat precio_max
## 1: 2.29 18823
## 2: 2.00 18818
## 3: 1.51 18806
## 4: 2.07 18804
## 5: 2.04 18795
## 6: 2.15 18791
## 7: 1.71 18791
## 8: 2.80 18788
## 9: 2.05 18787
## 10: 2.03 18781
max(price) en función del color colordiamdt[,.(precio_max=max(price)), by=color][order(-precio_max)]
## color precio_max
## 1: I 18823
## 2: G 18818
## 3: H 18803
## 4: F 18791
## 5: E 18731
## 6: J 18710
## 7: D 18693
max(price) en función del corte cutdiamdt[,.(precio_max=max(price)), by=cut][order(-precio_max)]
## cut precio_max
## 1: Premium 18823
## 2: Very Good 18818
## 3: Ideal 18806
## 4: Good 18788
## 5: Fair 18574
max(price) en función de la claridad claritydiamdt[,.(precio_max=max(price)), by=clarity][order(-precio_max)]
## clarity precio_max
## 1: VS2 18823
## 2: SI1 18818
## 3: IF 18806
## 4: SI2 18804
## 5: VS1 18795
## 6: VVS1 18777
## 7: VVS2 18768
## 8: I1 18531
max(price) en función de los quilates carat y el color colorhead(diamdt[,.(precio_max=max(price)), by=.(carat,color)][order(-precio_max)],10)
## carat color precio_max
## 1: 2.29 I 18823
## 2: 2.00 G 18818
## 3: 1.51 G 18806
## 4: 2.07 G 18804
## 5: 2.00 H 18803
## 6: 2.00 I 18795
## 7: 2.04 H 18795
## 8: 1.71 F 18791
## 9: 2.15 G 18791
## 10: 2.80 G 18788
max(price) en función de los quilates carat y el corte cuthead(diamdt[,.(precio_max=max(price)), by=.(carat,cut)][order(-precio_max)],10)
## carat cut precio_max
## 1: 2.29 Premium 18823
## 2: 2.00 Very Good 18818
## 3: 1.51 Ideal 18806
## 4: 2.07 Ideal 18804
## 5: 2.00 Premium 18795
## 6: 2.04 Premium 18795
## 7: 1.71 Premium 18791
## 8: 2.15 Ideal 18791
## 9: 2.80 Good 18788
## 10: 2.05 Ideal 18787
max(price) en función de los quilates carat y la claridad clarityhead(diamdt[,.(precio_max=max(price)), by=.(carat,clarity)][order(-precio_max)],10)
## carat clarity precio_max
## 1: 2.29 VS2 18823
## 2: 2.00 SI1 18818
## 3: 1.51 IF 18806
## 4: 2.07 SI2 18804
## 5: 2.29 SI1 18797
## 6: 2.00 VS1 18795
## 7: 2.04 SI1 18795
## 8: 1.71 VS2 18791
## 9: 2.15 SI2 18791
## 10: 2.80 SI2 18788
ggplot de tipo geom_point ()carat y precio pricegp<-ggplot(diamdt, aes(carat, price))
gp+geom_point()
cutgp+geom_point(aes(colour = cut))
facet_grid() en función del corte cutgp+geom_point(aes(colour = cut))+facet_grid(rows = vars(cut))
facet_grid() en función del corte cut y el color colorgp+geom_point(aes(colour = cut))+facet_grid(rows = vars(cut), cols = vars(color))
ggplot de tipo geom_boxplot()price en función del corte cutgb<-ggplot(diamdt, aes(cut, price, fill=cut))
gb+geom_boxplot()
ii.Variación del precio price en función del color color
gb2<-ggplot(diamdt, aes(color, price, fill=color))
gb2+geom_boxplot()
Este estudio ha permitido mostrar, de manera sencilla y través del uso de datos abiertos, algunas de las capacidades de las que dispone R para el análisis de datos.
En concreto, cuando se usan paquetes avanzados como data.table y ggplot2 el lenguaje R se transforma en una potente herramienta de análitica de datos masivos.