Zadanie 1. Utwórz wektor danych “wiek” (w latach). Każdy z nich ma mieć 10 obserwacji, dowolne wartości.
ryzyko <- c(0,1,0,1,0,1,1,1,0,0)
wiek <- c(15,25,40,50,60,23,33,36,19,24)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 <- as.factor(ifelse(wiek>30,0,1))
kody <- c(wysokie=0, niskie=1)
ryzyko <- factor(ryzyko, levels=kody, labels=names(kody))
ryzyko## [1] niskie niskie wysokie wysokie wysokie niskie wysokie wysokie niskie
## [10] niskie
## Levels: wysokie niskie
levels(ryzyko)## [1] "wysokie" "niskie"
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, decreasing=TRUE),]
view(ramka)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”.
tablica1 <- array(c(wiek, ryzyko), dim=c(5,2,2))
mat1 <- tablica1[,1,1]
mat12 <- tablica1[,1,2]
mat2 <- tablica1[,2,1]
mat22 <- tablica1[,2,2]
tablica11 <- array(c(mat1, mat12), dim=c(5,2,1))
tablica22 <- array(c(mat2, mat22), dim=c(5,2,1))
tablica11## , , 1
##
## [,1] [,2]
## [1,] 15 2
## [2,] 25 2
## [3,] 40 1
## [4,] 50 1
## [5,] 60 1
tablica22## , , 1
##
## [,1] [,2]
## [1,] 23 2
## [2,] 33 1
## [3,] 36 1
## [4,] 19 2
## [5,] 24 2
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(tablica11[1:3,1,1], tablica22[1:3,1,1], "różowy", "biały", "czarny")
lista## [[1]]
## [1] 15 25 40
##
## [[2]]
## [1] 23 33 36
##
## [[3]]
## [1] "różowy"
##
## [[4]]
## [1] "biały"
##
## [[5]]
## [1] "czarny"
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(c(1:9), nrow=3, ncol=3)
A <- matrix(c(1:6), nrow=2)
C <- matrix(c(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
Zadanie 7. Dokonaj pełnej analizy opisowej dla osób z grupy 1. oraz grupy 2. (średnia, odchylenia, kwartyle, skośność, kurtoza).
sr1 <- mean(tablica11)
sr1## [1] 19.7
sr2 <- mean(tablica22)
sr2## [1] 14.3
odchylenie1 <- sd(tablica11)
odchylenie1## [1] 22.8038
odchylenie2 <- sd(tablica22)
odchylenie2## [1] 14.2209
mediana1 <- median(tablica11)
mediana1## [1] 8.5
mediana2 <- median(tablica22)
mediana2## [1] 10.5
kwantyl11 <-quantile(tablica11, q=0.25)
kwantyl11## 0% 25% 50% 75% 100%
## 1.00 1.25 8.50 36.25 60.00
kwantyl21 <- quantile(tablica22, q=0.25)
library(e1071)
skośność1 <- skewness(tablica11)
skośność1## [1] 0.5985
skośność2 <- skewness(tablica22)
skośność2## [1] 0.2832
kurtoza1 <- kurtosis(tablica11)
kurtoza1## [1] -1.44134
kurtoza2 <- kurtosis(tablica22)
kurtoza2## [1] -1.80108
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, probability = TRUE,
main = "Rozkład ryzyka względem wieku",
col = "beige",
xlab = "Wiek",
ylab = "Gęstość")
lines(density(ramka[ryzyko=="niskie",1]), col="red")
lines(density(ramka[ryzyko=="wysokie",1]), col="blue")
legend(x = "bottomright",
legend = c("wysokie ryzyko", "niskie ryzyko"),
lty = c(1,1),
col = c("blue", "red"),
lwd = 2,
title = "Legenda",
text.font = 2,
bg="grey",
cex = 0.8)
boxplot(ramka$wiek~ramka$ryzyko,
main= "Rozkład ryzyka względem wieku",
col= "red",
prob= TRUE,
xlab = "Ryzyko",
ylab = "Wiek")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()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: