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)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, c("wysokie"), c("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(cbind(wiek,ryzyko) [order(wiek),])
ramka## wiek ryzyko
## 1 15 1
## 2 19 1
## 3 23 1
## 4 24 1
## 5 25 1
## 6 33 2
## 7 36 2
## 8 40 2
## 9 50 2
## 10 60 2
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", "Ryzyko")
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 Ryzyko
## [1,] 15 1
## [2,] 19 1
## [3,] 23 1
## [4,] 24 1
## [5,] 25 1
##
## , , Grupa 2
##
## Wiek Ryzyko
## [1,] 33 2
## [2,] 36 2
## [3,] 40 2
## [4,] 50 2
## [5,] 60 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(tablica[1:3,,1:2],c("niebieski","zielony","czerwony"))
lista## [[1]]
## , , Grupa 1
##
## Wiek Ryzyko
## [1,] 15 1
## [2,] 19 1
## [3,] 23 1
##
## , , Grupa 2
##
## Wiek Ryzyko
## [1,] 33 2
## [2,] 36 2
## [3,] 40 2
##
##
## [[2]]
## [1] "niebieski" "zielony" "czerwony"
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
Zadanie 7. Dokonaj pełnej analizy opisowej dla osób z grupy 1. oraz grupy 2. (średnia, odchylenia, kwartyle, skośność, kurtoza).
library(e1071)
library(ggplot2)
library(moments)##
## Dołączanie pakietu: 'moments'
## Następujące obiekty zostały zakryte z 'package:e1071':
##
## kurtosis, moment, skewness
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
Grupa <- ryzyko <- factor(ifelse(wiek > 30, c("wysokie"), c("niskie")))
tablica2 <- data.frame(cbind(wiek, Grupa)[order(wiek, decreasing = TRUE), ])
setDT(tablica2)
średnia_kwartyle_min_max <- tablica2[, as.list(summary(wiek)), by = Grupa]
colnames(średnia_kwartyle_min_max) <- c("Grupa","Minimum","Kwartyl 1.","Mediana","Średnia arytmetyczna","Kwartyl 3.","Maksimum")
odchylenie <- tablica2[, as.list(sd(wiek)), by = Grupa]
colnames(odchylenie) <- c("Grupa","Odchylenie")
skośność <- tablica2[, as.list(skewness(wiek)), by = Grupa]
colnames(skośność) <- c("Grupa","Skośność")
kurtoza <- tablica2[, as.list(kurtosis(wiek)), by = Grupa]
colnames(kurtoza) <- c("Grupa","Kurtoza")
dt <- Reduce(merge,list(średnia_kwartyle_min_max, odchylenie, kurtoza, skośność))
dt <- transpose(dt,keep.names="NULL")
colnames(dt) <- c("Analiza Opisowa", "Grupa 1", "Grupa 2")
new_dt <- dt[-c(1), ]
new_dt## Analiza Opisowa Grupa 1 Grupa 2
## 1: Minimum 15.000000 33.000000
## 2: Kwartyl 1. 19.000000 36.000000
## 3: Mediana 23.000000 40.000000
## 4: Średnia arytmetyczna 21.200000 43.800000
## 5: Kwartyl 3. 24.000000 50.000000
## 6: Maksimum 25.000000 60.000000
## 7: Odchylenie 4.147288 11.099550
## 8: Kurtoza 1.881862 1.809072
## 9: Skośność -0.651699 0.552025
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[ramka$ryzyko==1,1], main = "Rozkład wieku z niskim ryzykiem", xlab="Wiek", ylab="Częstotliwość", col="lightgreen", cex.main=0.7)
hist(ramka[ramka$ryzyko==2,1], main = "Rozkład wieku z wysokim ryzykiem", xlab="Wiek", ylab="Częstotliwość", col="lightblue", cex.main=0.7)par(mfrow=c(1,2))
boxplot(ramka[ramka$ryzyko==1,1], main = "Rozkład wieku z niskim ryzykiem", ylab="Wiek", col="lightgreen", cex.main=0.7)
boxplot(ramka[ramka$ryzyko==2,1], main = "Rozkład wieku z wysokim ryzykiem", ylab="Wiek", col="lightblue", cex.main=0.7)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: