0.1 Rodzaje struktur danych

0.1.1 Wektory

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

wiek <- c(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.

etykiety <- c("wysokie","niskie")
ryzyko <- factor(ifelse(wiek>30,0,1),labels=etykiety)
ryzyko
##  [1] niskie  niskie  wysokie wysokie wysokie niskie  wysokie wysokie niskie 
## [10] niskie 
## 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[3:1,1,2]
## [1] 23 24 25

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("blue","red","yellow"))
lista
## [[1]]
## , , 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
## 
## 
## [[2]]
## [1] "blue"   "red"    "yellow"
names(lista) <- c("tab","kolory")
lista$tab[1,,]
##        grupa 1. grupa 2.
## Wiek         60       25
## Ryzyko        1        2

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)
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).

library(moments)
summary(ramka[1:5,])
##       wiek          ryzyko 
##  Min.   :33.0   wysokie:5  
##  1st Qu.:36.0   niskie :0  
##  Median :40.0              
##  Mean   :43.8              
##  3rd Qu.:50.0              
##  Max.   :60.0
summary(ramka[6:10,])
##       wiek          ryzyko 
##  Min.   :15.0   wysokie:0  
##  1st Qu.:19.0   niskie :5  
##  Median :23.0              
##  Mean   :21.2              
##  3rd Qu.:24.0              
##  Max.   :25.0
Analiza_Gr1 <- data.frame(ramka[1:5,])
Analiza_Gr1 %>%
mutate(
średni_wiek = mean(wiek),
odchylenie = sd(wiek),
kwartyle = quantile(wiek),
Wsp.skośności = sd(wiek)/mean(wiek),
Kurtoza = kurtosis(wiek)
)
##   wiek  ryzyko średni_wiek odchylenie kwartyle Wsp.skośności Kurtoza
## 5   60 wysokie        43.8    11.0995       33      0.253414 1.80907
## 4   50 wysokie        43.8    11.0995       36      0.253414 1.80907
## 3   40 wysokie        43.8    11.0995       40      0.253414 1.80907
## 8   36 wysokie        43.8    11.0995       50      0.253414 1.80907
## 7   33 wysokie        43.8    11.0995       60      0.253414 1.80907
Analiza_Gr2 <- data.frame(ramka[6:10,])
Analiza_Gr2 %>%
mutate(
średni_wiek = mean(wiek),
odchylenie = sd(wiek),
kwartyle = quantile(wiek),
Wsp.skośności = sd(wiek)/mean(wiek),
Kurtoza = kurtosis(wiek)
)
##    wiek ryzyko średni_wiek odchylenie kwartyle Wsp.skośności Kurtoza
## 2    25 niskie        21.2    4.14729       15      0.195627 1.88186
## 10   24 niskie        21.2    4.14729       19      0.195627 1.88186
## 6    23 niskie        21.2    4.14729       23      0.195627 1.88186
## 9    19 niskie        21.2    4.14729       24      0.195627 1.88186
## 1    15 niskie        21.2    4.14729       25      0.195627 1.88186

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, col="green", main="Rozkład osób - Ryzyko Kredytowe (Histogram)", xlab = "Wiek", ylab = "Gęstość", cex.main=0.6)
boxplot(ramka$wiek~ramka$ryzyko, col="green", main="Rozkład osób - Ryzyko Kredytowe (Wykres ramkowy)",xlab="Ryzyko", ylab="Wiek",cex.main=0.6)

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: