ZIWAUA0/KursR/Rodział 2-3/Kurs_R.R

357 lines
8.9 KiB
R

# author: Cezary Pukownik
# indeks: s444337
library(tidyverse)
#' # 2.3.1
#' ## Zadanie 1
airquality %>%
select(Ozone, Solar.R, Wind, Temp) %>%
filter(Ozone>80)
#' ## Zadanie 2
#install.packages('weathermetrics')
library(weathermetrics)
airquality %>%
mutate(TempC=fahrenheit.to.celsius(Temp))
#' # 2.4.1
#' ## Zadanie 1
as_tibble(airquality)
#' ## Zadanie 2
tibble(litery=letters[6:11],
miesiace=month.name[1:6])
#' # 3.2.4
#' ## Zadanie 1
ggplot(data=mpg)
#' Co widzisz?
#' Szare. puste pole
#' ## Zadanie 2
as_tibble(mtcars)
#' liczba wierszy: 32
#' ## Zadanie 3
?mpg
#' drv
#' f = front-wheel drive, r = rear wheel drive, 4 = 4wd
#' ## Zadanie 4
ggplot(aes(x=hwy, y=cyl), data=as_tibble(mpg)) + geom_point()
#' ## Zadanie 5
ggplot(aes(x=class, y=drv), data=as_tibble(mpg)) + geom_point()
#' Dlaczego wykres jest bezuzyteczny?
#' Wykres nie pokazuje żadnych liczbowych informacji na temat danych
#' Zostały wykorzystane dwie cechy typu categorical
#' Jedyną informacją jest to, czy dana kombinacja drv i class istanieje.
#' # 3.3.1
#' ## Zadanie 1
#' ustalenie parametru color wewnątrz funckcji aes
#' powinno być nazwą kolumny z categoriami, po których
#' punkty zostaną pogrupowane, a nie istanieje kolumna "blue"
#' w zbriorze danych
#'
#' parametr color powinien zostać ustalony wewnątrz
#' funkcji geom_point. Poprawiony kod poniżej.
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy), color = "blue")
#' ## Zadanie 2
mpg
#' kolumny z danymi kategorialnymi to:
#' manufacturer, model, trans, frv, fl, class
#' można zwrócić uwagę na typ danych w kolumnie
#' jeśli typ to <chr>, to najprawdopodobniej jest to dana kategorialna
#' ## Zadanie 3
ggplot(data = mpg) +
geom_point(mapping = aes(x=displ, y=hwy, color=displ, size=displ))
#' zmienna ciągła jest interpolowania między dwoma kolorami tworząc gradient
#' tak jak samo z rozmiarem, rozmiar jest skalowany
#' w przypadku shape powoduje to błąd. Gdyby podać dane kategorialne
#' podział byłby dyskretny, na różne kolory, wielkości, kształty
#' ## Zadanie 4
#' Przykład w punkcie wyżej
#' Ta sama zmienna bedzie przedstawiona różnymi metodami
#' ## Zadanie 5
#' stroke wpływa na grubuść konturu, obrysu, mozna stosować z punktami i liniami
?geom_point
#' ## Zadanie 6
ggplot(data = mpg) +
geom_point(mapping = aes(x=displ, y=hwy, color=displ < 5))
mpg %>%
filter(displ < 5) %>%
mutate(is_less_than_5=displ < 5)
#' Przypisanie displ < 5 podzieliło data set na dwie grupy
#' TRUE oraz FALSE, w zalezności od tego czy warunek był spełniony
#' czy nie.
#' # 3.5.1
#' ## Zadanie 1
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy)) +
facet_grid(drv ~ displ)
#' ggplot potraktuje ją jako zmienną kategorialną,
#' tworząc siatkę dla kazdej unikatowej wartości zmiennej ciagłęj
#' ## Zadanie 2
ggplot(data = mpg) +
geom_point(mapping = aes(x = drv, y = cyl))
ggplot(data = mpg) +
geom_point(mapping = aes(x = drv, y = cyl)) +
facet_grid(cyl~drv)
#' puste komórki oznacznaczają brak danych
#' ## Zadanie 3
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy)) +
facet_grid(drv ~ .)
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy)) +
facet_grid(. ~ cyl)
#' kropka traktowana jest jako puste pole,
#' wtedy jedna z osi, nie bedzie kategoryzowana
#' ## Zadanie 4
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy)) +
facet_wrap(~ class, nrow = 2)
#' # 3.6.1
#' ## Zadanie 1
#' liniowy - geom_line()
#' pudełkowy - geom_boxplot()
#' histogram - geom_histogram()
#' warstwowy - geom_area()
#' ## Zadanie 2
ggplot(data = mpg, mapping = aes(x = displ, y = hwy, color = drv)) +
geom_point() +
geom_smooth(se = FALSE)
#' ## Zadanie 3
#' show.legend = FALSE, sluży do ukrycia legendy
#' ## Zadanie 4
#' parametr se w funcji geom_smooth() służy do pokazania, lub ukrycia przedziałów ufnośći na wykresie.
#' ## Zadanie 5
#' dwa poniższe wyresy są takie same, różnią się tylko sposobem denifincji mapowania.
#' mapowanie wewnątrz aes w ggplot, przenosi mapowania na wszystkie geometrie, gdy nie sa zdefiniowane inne.
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
geom_point() +
geom_smooth()
ggplot() +
geom_point(data = mpg, mapping = aes(x = displ, y = hwy)) +
geom_smooth(data = mpg, mapping = aes(x = displ, y = hwy))
#' ## Zadanie 6
#' Wykres 1
mpg %>%
ggplot(aes(x=displ, y=hwy)) +
geom_point() +
geom_smooth(se=FALSE)
#' Wykres 2
mpg %>%
ggplot(aes(x=displ, y=hwy, group=drv)) +
geom_point() +
geom_smooth(se=FALSE)
#' Wykres 3
mpg %>%
ggplot(aes(x=displ, y=hwy, color=drv)) +
geom_point() +
geom_smooth(se=FALSE)
#' Wykres 4
mpg %>%
ggplot(aes(x=displ, y=hwy)) +
geom_point(aes(color=drv)) +
geom_smooth(se=FALSE)
#' Wykres 5
mpg %>%
ggplot(aes(x=displ, y=hwy)) +
geom_point(aes(color=drv)) +
geom_smooth(aes(linetype=drv), se=FALSE)
#' Wykres 6
mpg %>%
ggplot(aes(x=displ, y=hwy)) +
geom_point(aes(fill=drv), shape=21, stroke=2, color='white', size=2)
#' # 3.7.1
# Zadanie 1
?stat_summary
#' Funcja stat_summary jest związana w funcją geom_pointrange()
diamonds %>%
ggplot() +
geom_pointrange(aes(x = cut, y = depth), stat='summary')
#' ## Zadanie 2
#' funkcja geom_bar służy do wykresów słupkowych/kolumnowych i jej domyslna statystyka do 'count',
#' funcja geom_col, ma domyślną statystykę 'identity'
#' ## Zadanie 3
#'
#' geom_bar : stat_count
#' geom_col : identity
#' geom_histogram: stat_bin
#' geom_line : identity
#' geom_path : identity
#' geom_step : identity
#' geom_segment : identity
#' geom_curve : identity
#' geom_spoke : identity
#' geom_polygon : identity
#' geom_ribbot : identity
#' geom_area : identity
#' geom_freqpoly : stat_bin
#'
#' ## Zadanie 4
#' ?geom_smmoth : stat_smooth
#' y - predicted value
#' ymin - lower pointwise confidence interval around the mean
#' yman - upper pointwise confidence interval around the mean
#' se = standard error
#'
#' ## Zadanie 5
#' każdy "słupek" jest taki sam
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut, y = ..prop..))
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut, fill = color, y = ..prop..))
# uzyliśmy group=1, aby nadpisać domysle grupowanie funcji geom_bar, które grupuje po x, czyli po cut,
# dlatego każdy słupek wyglądał identycznie, ponieważ powinniśmy w tym przypadku zgrupować po całym zbiorze, usunąć grupy.
# równie dobrze będzie działać group=2, albo group='abc'
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut, fill = color, y = ..prop.., group=1))
#' # 3.8.1
#'
#' ## Zadanie 1
ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
geom_point()
#' ## Zadanie 2
#' nakładają się na siebie punkty i nie widać dobrze zagęszczenia
#' mozna poprawić przez dodanie posiiton='jitter'
ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
geom_point(position='jitter')
#' ## Zadanie 3
?geom_jitter
#' paremtry width i height
#'
ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
geom_jitter(position='jitter')
ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
geom_count(position='jitter')
#' obie funcje pokazują zagęszczenie, geom jitter, rozsuwa je aby było widać kazdy punkt.
#' geom count pokazuje zagęszczenie przez parametr size.
#' Zadanie 4
?geom_boxplot
#' domyślne dopasowanie dla geom_boxplot to 'dodge2
mpg %>%
ggplot(aes(x=cty, y=factor(cyl))) +
geom_boxplot()
#' # 3.9.1
#' ## Zadanie 1
mpg %>%
ggplot(aes(x=1, fill=class))+
geom_bar() +
coord_polar()
#' ## Zadanie 2
#' Funcjka labs, służy do dodania etykiet tetułu, opisy osi, i innnych tektów na wykresie
mpg %>%
ggplot(aes(x=1, fill=class))+
geom_bar() +
coord_polar() +
labs(title='Słupkotwy wykres skumulowany',
subtitle='O kordynatach polarnych',
y='Liczba',
x='Wartość dummy')
#' ## Zadanie 3
#' coord_map posiada więcej parametrów, np projectiom, parameters i orientation
#' coord_quickmap, nie posiada tych parametrów.
#' coord_map nada się do większych powirzchni świata, to jest pojekcją powierzchni sfery
#' na plaski 2D. coord_quickmap, nadaje się do map o małym rozmiarze i zachowuje proste linie.
#' ## Zadanie 4
#'
#'
ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
geom_point() +
geom_abline() +
coord_fixed()
#' Z wykresu wnioskujemy, że spalanie w mieście i na autostradzie są skorelowane.
#' Jeśli samochód pali dużo w mieście, to pali duzo na autostradzie i odwotnie.
#'
#' Linia ab, pokazuje tam prostą y=x, dzięki temu mamy odniesienie i dodatkowo możemy wywnioskować,
#' że na galonie paliwa, na autostradzie zawsze przejedziemy wiecej niż w mieście.
#'
#' Coord fixed, sprawia że wartości obu osi są w tej samej skali. Obie wartości to liczba przejechanych kilometrów, więc
#' ważne jest zachowanie jednolitej skali.
#'
#' Funckja abline() tworzy linię prostą y=Ax+B stąd nazawa AB Line. Domyslnie A=1, B=0 dlatego abline() to y=x