0.1 Rodzaje struktur danych

0.1.1 Wektory

Zadanie 1. Utwórz wektor danych “wiek” (w latach). Wektor ma mieć 10 obserwacji, dowolne wartości.

wiek <- c(15,25,40,50,60,23,33,36,19,24)
wiek
##  [1] 15 25 40 50 60 23 33 36 19 24

0.1.2 Czynnik

Zadanie 2. Utwórz wektor ryzyko jako czynnik (factor): dla wieku >30 lat “0” o etykiecie “wysokie”, a dla pozostałych “1” o etykiecie “niskie”. Wskazówka: można wykorzystać ifelse.

ryzyko <- factor(ifelse(wiek>30,0,1), labels = c("Wysokie","Niskie"))

str(ryzyko)
##  Factor w/ 2 levels "Wysokie","Niskie": 2 2 1 1 1 2 1 1 2 2
levels(ryzyko)
## [1] "Wysokie" "Niskie"
ryzyko[3]
## [1] Wysokie
## Levels: Wysokie Niskie

0.1.3 Ramka danych

Zadanie 3. Połącz wiek i ryzyko tworząc nową ramkę danych o nazwie “ramka”. Posortuj obserwacje wg wieku (malejąco).

ramka <- data.frame(wiek, ryzyko)
ramka <- ramka[order(-wiek),]
ramka
##    wiek  ryzyko
## 5    60 Wysokie
## 4    50 Wysokie
## 3    40 Wysokie
## 8    36 Wysokie
## 7    33 Wysokie
## 2    25  Niskie
## 10   24  Niskie
## 6    23  Niskie
## 9    19  Niskie
## 1    15  Niskie

0.1.4 Tablice

Zadanie 4. Utwórz tablicę “tablica” z wieku i ryzyka o wymiarach 5 wierszy, 2 kolumny (zmienne), 2 podgrupy o nazwie “Grupa 1.” oraz “Grupa 2”.

nazwy <- c("Grupa 1.", "Grupa 2.")
nazwy2 <- c("Wiek","Ryzyko")
tablica <- array(c(unlist(ramka[1:5,]),
                   unlist(ramka[6:10,])),
                 dim = c(5,2,2),
                 dimnames = list(NULL,nazwy2,nazwy)
                 )
tablica
## , , Grupa 1.
## 
##      Wiek Ryzyko
## [1,]   60      1
## [2,]   50      1
## [3,]   40      1
## [4,]   36      1
## [5,]   33      1
## 
## , , Grupa 2.
## 
##      Wiek Ryzyko
## [1,]   25      2
## [2,]   24      2
## [3,]   23      2
## [4,]   19      2
## [5,]   15      2

0.1.5 Listy

Zadanie 5. Utwórz listę “lista” zawierającą pierwsze 3 elementy każdej z grup w tablicy “tablica” oraz 3 kolory które najbardziej lubisz.

lista <- list(tablica[1:3,,],c("niebieski","zielony","czerwony"))
names(lista) <- c("tab","kolory")
lista
## $tab
## , , Grupa 1.
## 
##      Wiek Ryzyko
## [1,]   60      1
## [2,]   50      1
## [3,]   40      1
## 
## , , Grupa 2.
## 
##      Wiek Ryzyko
## [1,]   25      2
## [2,]   24      2
## [3,]   23      2
## 
## 
## $kolory
## [1] "niebieski" "zielony"   "czerwony"
lista$tab[2]
## [1] 50
lista$kolory[3]
## [1] "czerwony"

0.1.6 Macierze

Zadanie 6. Utwórz macierz kwadratową B z cyfr od 1 do 9; macierz kwadratową A 2x3 z cyfr od 1 do 6; macierz C 3x2 z cyfr od 1 do 6. Dodaj do macierzy A wiersz [1,1,1] jako macierz D oraz do macierzy C kolumnę [1,1,1] jako macierz E. Wyświetl tylko trzeci wiersz macierzy E i trzecią kolumnę macierzy D.

B <- matrix(1:9, nrow=3, ncol=3)
A <- matrix(1:6, nrow=2, ncol=3)
C <- matrix(1:6, nrow=3)
D <- rbind(A, c(1,1,1))
E <- cbind(C,c(1,1,1))
E[3,]
## [1] 3 6 1
D[,3]
## [1] 5 6 1

0.2 Analiza opisowa

Zadanie 7. Dokonaj pełnej analizy opisowej dla osób z grupy 1. oraz grupy 2. (średnia, odchylenia, kwartyle, skośność, kurtoza).

summary(tablica[,1,1])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    33.0    36.0    40.0    43.8    50.0    60.0
summary(tablica[,1,2])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    15.0    19.0    23.0    21.2    24.0    25.0
# Średnia wieku w Grupie 1 wynosi 43,8 lat, natomiast w Grupie 2 21,2 lata. W Grupie 1 pierwszy kwartyl wynosi 36, co oznacza że 75% pozostałych obserwacji (osób) ma powyżej 36 lat. W przypadku Grupy 2. pierwszy kwartyl wynosi 19, co oznacza, że 75% pozostałych osób ma powyżej 19 lat.

sd(tablica[,1,1])
## [1] 11.0995
sd(tablica[,1,2])
## [1] 4.14729
# Odchylenie standardowe w Grupie 1 wynosi 11,1 co oznacza, że o tyle średnio różni się wiek osób od średniej w tej grupie, w Grupie 2 odchylenie standardowe jest dużo niższe i wynosi odpowiednio 4,15.
skewness(tablica[,1,1])
## [1] 0.394997
skewness(tablica[,1,2])
## [1] -0.466318
kurtosis(tablica[,1,1])
## [1] -1.84219
kurtosis(tablica[,1,2])
## [1] -1.79561

Zadanie 8. Przedstaw na histogramach oraz wykresach ramkowych rozkłady wieku osób z wysokim i niskim ryzykiem kredytowym (porównanie - 2 wykresy obok siebie).

par(mfrow=c(1,2))
hist(ramka$wiek,prob=TRUE,xlab="wiek",ylab="ryzyko",main="Rozkład wieku osób według ryzyka kredytowego")
boxplot(ramka$wiek~ramka$ryzyko,xlab="ryzyko",ylab="wiek",main="Rozkład wieku osób według ryzyka kredytowego (wykres ramkowy)" )

0.3 Fajki

0.3.1 Fajka bazowa

Przykład. Dane dotyczą prawie 985 transakcji sprzedaży mieszkań z Sacramento (Kalifornia,USA). Poniżej pokazano przykład wykorzystania fajki bazowej R “|>”: wykres logarytmu gęstości cen.

price |> 
  log() |>
  density() |>
  plot()

0.3.2 Fajka %>%

Przykład. Wykreśl histogram cen sprzedaży mieszkań (“Condo”) z dwiema sypialniami.

Filtry z dplyr działają na całej ramce danych, stąd by wykreślić ceny musimy użyć pakietu ggplot2:

Bez użycia filtra i fajek nie ma takiej potrzeby: