memphis <- c(9.1, 15.1, 8.8, 10.0, 7.5, 10.5,
            8.3,  9.1, 6.0,  5.8, 12.1,  9.3)

louisville <- c(4.7, 5.0, 4.2, 3.3, 5.5,
                2.2, 4.1, 2.6, 3.4, 7.0)

df <- data.frame(
  aeropuerto = c(rep("Memphis", length(memphis)),
                 rep("Louisville", length(louisville))),
  carga = c(memphis, louisville)
)

df
##    aeropuerto carga
## 1     Memphis   9.1
## 2     Memphis  15.1
## 3     Memphis   8.8
## 4     Memphis  10.0
## 5     Memphis   7.5
## 6     Memphis  10.5
## 7     Memphis   8.3
## 8     Memphis   9.1
## 9     Memphis   6.0
## 10    Memphis   5.8
## 11    Memphis  12.1
## 12    Memphis   9.3
## 13 Louisville   4.7
## 14 Louisville   5.0
## 15 Louisville   4.2
## 16 Louisville   3.3
## 17 Louisville   5.5
## 18 Louisville   2.2
## 19 Louisville   4.1
## 20 Louisville   2.6
## 21 Louisville   3.4
## 22 Louisville   7.0
# resumen por grupo
resumen <- aggregate(carga ~ aeropuerto, df, function(x){
  c(n = length(x),
    media = mean(x),
    mediana = median(x),
    sd = sd(x),
    var = var(x),
    min = min(x),
    q1 = quantile(x, 0.25),
    q3 = quantile(x, 0.75),
    max = max(x))
})
print(resumen)
##   aeropuerto   carga.n carga.media carga.mediana  carga.sd carga.var carga.min
## 1 Louisville 10.000000    4.200000      4.150000  1.431394  2.048889  2.200000
## 2    Memphis 12.000000    9.300000      9.100000  2.542726  6.465455  5.800000
##   carga.q1.25% carga.q3.75% carga.max
## 1     3.325000     4.925000  7.000000
## 2     8.100000    10.125000 15.100000
#Boxplot
boxplot(carga ~ aeropuerto,
        data = df,
        col = c("#4C9BE8", "#F39C12"),
        main = "Comparación de carga diaria\nMemphis vs Louisville",
        ylab = "Miles de toneladas",
        xlab = "Aeropuerto",
        border = "black")
stripchart(carga ~ aeropuerto,
           data = df,
           method = "jitter",
           vertical = TRUE,
           pch = 19,
           col = "black",
           add = TRUE)