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
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[1:5], ryzyko[1:5]), dim=c(5,2))
tablica2 <- array(c(wiek[6:10],ryzyko[6:10]),dim=c(5,2))
tablica <- array(c(tablica1,tablica2),dim=c(5,2,2))
dimnames(tablica)[[2]]<- list("Wiek","Ryzyko")
dimnames(tablica)[[3]]<- list("Grupa 1","Grupa 2")
tablica## , , Grupa 1
##
## Wiek Ryzyko
## [1,] 15 2
## [2,] 25 2
## [3,] 40 1
## [4,] 50 1
## [5,] 60 1
##
## , , Grupa 2
##
## Wiek Ryzyko
## [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(tablica1[1:3,1:2],tablica2[1:3,1:2],c("rozowy", "czerwony", "bialy"))
lista## [[1]]
## [,1] [,2]
## [1,] 15 2
## [2,] 25 2
## [3,] 40 1
##
## [[2]]
## [,1] [,2]
## [1,] 23 2
## [2,] 33 1
## [3,] 36 1
##
## [[3]]
## [1] "rozowy" "czerwony" "bialy"
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,3,3)
A <- matrix (1:6,2,3)
C <- matrix (1:6,3,2)
D <- rbind (A,c(1,1,1))
E <- cbind (C,c(1,1,1))
E[3,]## [1] 3 6 1
E[,3]## [1] 1 1 1
Zadanie 7. Dokonaj pełnej analizy opisowej dla osób z grupy 1. oraz grupy 2. (średnia, odchylenia, kwartyle, skośność, kurtoza).
library(moments)
#dla grupy 1
summary(as.numeric(tablica[,1,1])) #pierwsza kolumna - wiek, grupa nr 1## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 15 25 40 38 50 60
skewness(as.numeric(tablica[,1,1])) #wsk. asymetrii wieku ludzi z grupy nr 1; trzeba wlaczyc packages moments## [1] -0.0912794
kurtosis(as.numeric(tablica[,1,1])) #wsk. kurtozy wieku ludzi z grupy nr 1 ## [1] 1.59254
#dla grupy 2
summary(as.numeric(tablica[,1,2])) #pierwsza kolumna - wiek, grupa nr 2## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 19 23 24 27 33 36
skewness(as.numeric(tablica[,1,2])) #wsk. asymetrii wieku ludzi z grupy nr 2; trzeba wlaczyc packages moments## [1] 0.258649
kurtosis(as.numeric(tablica[,1,2])) #wsk. kurtozy wieku ludzi z grupy nr 2 ## [1] 1.44806
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="Ryzyko wzgledem wieku")
lines (density(ramka[ryzyko=="niskie", 1]), col=rgb(1,0,0))
lines (density(ramka[ryzyko=="wysokie",1]), col=rgb(0,0,1))
legend(x="topright", legend=c("niskie","wysokie"),title="legenda",lty=c(1), col=c("red", "blue"), lwd=1)
boxplot(ramka$wiek~ramka$ryzyko, xlab="ryzyko", ylab="wiek")#narysowac dwa nalozone na siebie wykresy, dodac legende w prawym gornym rogu (legend), podpisac osie, dodac tytul wykresuZadanie 9. 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()Zadanie 10. 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: