library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(viridisLite)
library(RColorBrewer)
library(readr) #Para leer archivo .csv
salesbike<-read_csv("Sales.csv")
## Rows: 27124 Columns: 18
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (8): Month, Age_Group, Customer_Gender, Country, State, Product_Categor...
## dbl (9): Day, Year, Customer_Age, Order_Quantity, Unit_Cost, Unit_Price, Pr...
## date (1): Date
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
tabla0<-table(salesbike$Year) #Variable cuantitativa discreta
tabla0
##
## 2013 2014 2015 2016
## 5682 7880 5682 7880
vy<-barplot(tabla0, main = "Númeroventas artículos y bicicletas por año", ylab = "Número de ventas", xlab = "Años", ylim = c(0,8000), col = "purple")
text(vy,tabla0+0.5,labels = tabla0)
levels(salesbike$Country) #Variable cualitativa nominal, Niveles por factores
## NULL
tabla1<-table(salesbike$Country)
tabla1
##
## Australia Canada France Germany United Kingdom
## 5260 3804 2244 2606 3074
## United States
## 10136
vc<-barplot(tabla1, main = "Número ventas artículos y bicicletas por países", ylab = "Número de ventas", xlab = "Países", ylim = c(0,10200), col = "yellow",)
text(vc,tabla1+0.5,labels = tabla1)
# Diagrama de torta: Porcentaje de consumidores por género
salesbike %>%
count(Customer_Gender)
## # A tibble: 2 × 2
## Customer_Gender n
## <chr> <int>
## 1 F 13232
## 2 M 13892
levels(salesbike$Customer_Gender) #Cualitativa nominal
## NULL
tabla<-table(salesbike$Customer_Gender)
tabla
##
## F M
## 13232 13892
genero<-c("F","M")
a<-c("13232","13892")
x<-as.integer(a)
tabla_genero<-data.frame(genero,x)
#tabla_genero
porcgen<-function(x){
return(round(x*0.0036867718625571))
}
porcentaje<-porcgen(x)
tabla_genero$porcentaje<-porcentaje
tabla_genero
## genero x porcentaje
## 1 F 13232 49
## 2 M 13892 51
pie(x,labels = paste0((tabla_genero$porcentaje),"%"), col = viridis(4), main = "Diagrama circular", border = rocket(4))
legend("bottomright",legend=names(tabla),cex=0.75, fill = viridis(4))
# Histograma de las edades de los consumidores
hist(salesbike$Customer_Age, main = "Histograma de las edades de los consumidores",xlim = c(14,100),ylim =c(0,5000), col=brewer.pal(9,"Set1"),xlab = "Edad consumidores",ylab = "Frecuencia", labels=TRUE,border=brewer.pal(3,"Paired"))
axis(1,at=seq(0,100,by=5))
# Boxplot
salesbike<-salesbike %>% mutate(salesbike,rate=round(Revenue/Cost*100))
salesbike %>%
select(Cost, Revenue, rate)
## # A tibble: 27,124 × 3
## Cost Revenue rate
## <dbl> <dbl> <dbl>
## 1 360 950 264
## 2 360 950 264
## 3 1035 2401 232
## 4 900 2088 232
## 5 180 418 232
## 6 225 522 232
## 7 180 379 211
## 8 90 190 211
## 9 990 2086 211
## 10 945 1991 211
## # ℹ 27,114 more rows
#salesbike$rate
# Analisis de los datos de la columna Costos del Data set salesbike, para hallar la media (Promedio), mediana (Valor de la mitad y la moda (El valor más común)
#salesbike$Cost #Muestra los datos del campo Costos
mean(salesbike$Cost) #Calculo de la media (promedio)
## [1] 73.92368
median(salesbike$Cost) #Calculo de la mediana (valor en el medio, después de haber ordenado todos los valores.)
## [1] 48
names(sort(-table(salesbike$Cost)))[1] #Calculo de la moda
## [1] "48"
# Grafica Boxplot
boxplot(salesbike$rate, col="gray",ylab="Tasa de costos",outline=FALSE,main="Boxplot",ylim=c(150,300))
points(mean(salesbike$rate),col="white",pch=20)
text(paste(" ", round(mean(salesbike$rate), 2)),x=1.1,y=220)
#Agregar los puntos que se muestran al ejecutar summary(salesbike$rate) en el boxplot.
stripchart(summary(salesbike$rate),vertical = TRUE, method = "jitter", pch = 19, add = TRUE, col = "blue")
summary(salesbike$rate)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 96.0 204.0 235.0 218.5 250.0 300.0