library(ENRanalytics) library(ggplot2) library(scales) library(dplyr)
Na przykładzie średniego zużycia paliwa w zależności od liczby biegów z data frame'u mtcars
zaprezentuje działanie
fuckcji boot_ci korzystając ze starego kodu oraz za pomocą zmodyfikowanej wersji tej funkcji w połączeniu z pakietem dplyr
.
(Pomijając, że to się da na pewno zrobić milion razy lepiej nawet bez dplyra. Tak to jest jak się napisze kawałek kodu 2 lata temu a potem bezmyślnie kopiuje.)
Dla każdej z tych kategorii będzie policzony confidence interval:
categories <- unique(mtcars$gear)
Niezbędne obliczenia:
val <- vector() min <- vector() max <- vector() noGears <- vector() sample <- vector() median <- vector() for (i in 1:length(categories)) { tmp <- subset(mtcars, gear == categories[i]) tmpRes <- boot_ci(tmp$mpg, mean) val <- c(val, tmpRes$val) min <- c(min, tmpRes$min) max <- c(max, tmpRes$max) noGears <- c(noGears, categories[i]) sample <- c(sample, NROW(tmp)) median <- c(median, median(tmp$mpg)) }
Sklejenie wszystkiego do kupy:
chartData <- data.frame(noGears, sample, val, median, min, max)
Stworzenie wykresu:
ggplot(chartData, aes(x = noGears, y = val, min = min, max = max)) + geom_bar(stat = "identity", fill = cat_colors[1]) + geom_errorbar(width = 0.25) + geom_errorbar(aes(min = median, max = median), color = "#000000", size = 2) + theme_peru()
Jak można do zrobić używając pakietu dplyr
? Z wykorzystaniem fukcji do
, która pozwala na drastyczne skrócenie
ilości linii kodu. Wystarczy jedna linijka kodu!!!
chartData2 <- mtcars %>% group_by(gear) %>% do(boot_ci(.$mpg, mean, median = T, dfoutput = T))
A następnie generujemy ten sam wykres co powyżej:
ggplot(chartData2, aes(x = gear, y = val, min = min, max = max)) + geom_bar(stat = "identity", fill = cat_colors[1]) + geom_errorbar(width = 0.25) + geom_errorbar(aes(min = median, max = median), color = "#000000", size = 2) + theme_peru()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.