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.

wiek <- c(15,25,40,50,60,23,33,36,19,24)
#ryzyko<-as.factor(ifelse(wiek > 30, c("Wysokie"),c("Niskie")))
ryzyko <- factor(ifelse(wiek>30,0,1),labels=c("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(cbind(wiek,ryzyko)[order(-wiek),])
ramka
##    wiek ryzyko
## 1    60      1
## 2    50      1
## 3    40      1
## 4    36      1
## 5    33      1
## 6    25      2
## 7    24      2
## 8    23      2
## 9    19      2
## 10   15      2

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

grupy <- c("Grupa 1", "Grupa 2")
kolumny <- c("Wiek","Ryzko")
tablica <- array(data=c(unlist(ramka[1:5,]), 
unlist(ramka[6:10,])),dim = c(5,2,2),
dimnames = list(NULL,kolumny,grupy))
tablica
## , , Grupa 1
## 
##      Wiek Ryzko
## [1,]   60     1
## [2,]   50     1
## [3,]   40     1
## [4,]   36     1
## [5,]   33     1
## 
## , , Grupa 2
## 
##      Wiek Ryzko
## [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,,1:2],c("niebieski","zielony","czarny"))
lista[[2]]
## [1] "niebieski" "zielony"   "czarny"

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(data.table)
## 
## Dołączanie pakietu: 'data.table'
## Następujące obiekty zostały zakryte z 'package:dplyr':
## 
##     between, first, last
## Następujący obiekt został zakryty z 'package:purrr':
## 
##     transpose
library(ggplot2)
library(e1071)
Grupa <- ryzyko <- factor(ifelse(wiek > 30, c("Wysokie"), c("Niskie")))
tablica1 <- data.frame(cbind(wiek, Grupa)[order(wiek, decreasing = TRUE), ])
setDT(tablica1)

analiza <- tablica1[, as.list(summary(wiek)), by = Grupa]
colnames(analiza) <- c("Grupa","Minimum","Quartile 1.","Median","Arithmetic average","Quartile 3.","Maximum")

deviation <- tablica1[, as.list(sd(wiek)), by = Grupa]
colnames(deviation) <- c("Grupa","Deviation")

skewness <- tablica1[, as.list(skewness(wiek)), by = Grupa]
colnames(skewness) <- c("Grupa","Skewness")

kurtosis <- tablica1[, as.list(kurtosis(wiek)), by = Grupa]
colnames(kurtosis) <- c("Grupa","Kurtosis")

dt <- Reduce(merge,list(analiza, deviation, kurtosis, skewness))

dt <- transpose(dt,keep.names="NULL")
colnames(dt) <- c("Analiza Opisowa", "Grupa 1", "Grupa 2")

dt <- dt[-c(1),]
dt
##       Analiza Opisowa   Grupa 1   Grupa 2
## 1:            Minimum 15.000000 33.000000
## 2:        Quartile 1. 19.000000 36.000000
## 3:             Median 23.000000 40.000000
## 4: Arithmetic average 21.200000 43.800000
## 5:        Quartile 3. 24.000000 50.000000
## 6:            Maximum 25.000000 60.000000
## 7:          Deviation  4.147288 11.099550
## 8:           Kurtosis -1.795608 -1.842194
## 9:           Skewness -0.466318  0.394997

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

ramka_ggplot <- data.frame(wiek, ryzyko)

hist(ramka_ggplot$wiek[ramka_ggplot$ryzyko=="Niskie"],main="Low Risk",col="red",xlab="Age", ylab="Frequency")
hist(ramka_ggplot$wiek[ramka_ggplot$ryzyko=="Wysokie"],main="High Risk",col="black", xlab="Age", ylab="Frequency")

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: