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.

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

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

tablica1<-array(ryzyko,dim=list(5,1,2))
tablica2<-array(wiek, dim=list(5,1,2))
tablica1
## , , 1
## 
##      [,1]     
## [1,] "niskie" 
## [2,] "niskie" 
## [3,] "wysokie"
## [4,] "wysokie"
## [5,] "wysokie"
## 
## , , 2
## 
##      [,1]     
## [1,] "niskie" 
## [2,] "wysokie"
## [3,] "wysokie"
## [4,] "niskie" 
## [5,] "niskie"
tablica2
## , , 1
## 
##      [,1]
## [1,]   15
## [2,]   25
## [3,]   40
## [4,]   50
## [5,]   60
## 
## , , 2
## 
##      [,1]
## [1,]   23
## [2,]   33
## [3,]   36
## [4,]   19
## [5,]   24
library(abind)
tablica<-abind(list(tablica1,tablica2), rev.along=2, new.names=list(NULL,list("wiek","ryzyko"),list("Grupa1.","Grupa2.")))
tablica
## , , Grupa1.
## 
##      wiek      ryzyko
## [1,] "niskie"  "15"  
## [2,] "niskie"  "25"  
## [3,] "wysokie" "40"  
## [4,] "wysokie" "50"  
## [5,] "wysokie" "60"  
## 
## , , Grupa2.
## 
##      wiek      ryzyko
## [1,] "niskie"  "23"  
## [2,] "wysokie" "33"  
## [3,] "wysokie" "36"  
## [4,] "niskie"  "19"  
## [5,] "niskie"  "24"

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, 1:2],"beżowy","biały","czarny")
lista
## [[1]]
## , , Grupa1.
## 
##      wiek      ryzyko
## [1,] "niskie"  "15"  
## [2,] "niskie"  "25"  
## [3,] "wysokie" "40"  
## 
## , , Grupa2.
## 
##      wiek      ryzyko
## [1,] "niskie"  "23"  
## [2,] "wysokie" "33"  
## [3,] "wysokie" "36"  
## 
## 
## [[2]]
## [1] "beżowy"
## 
## [[3]]
## [1] "biały"
## 
## [[4]]
## [1] "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,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
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).

summary(tablica2[,,1])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##      15      25      40      38      50      60
summary(tablica2[,,2])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##      19      23      24      27      33      36
library(e1071)
skewness(tablica2[,,1])
## [1] -0.0653142
skewness(tablica2[,,2])
## [1] 0.185074
kurtosis(tablica2[,,1])
## [1] -1.98077
kurtosis(tablica2[,,2])
## [1] -2.07324

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, main="Rozkład wieku według ryzyka kredytowego", cex.main=1, xlab ="wiek", ylab="gęstość",ylim = c(0,0.05) )
lines(density(ramka[ryzyko=="niskie",1]), col="blue")
lines(density(ramka[ryzyko=="wysokie",1]),col="red")
legend("bottomright", c("czerwony-wysokie ryzyko", "niebieski-niskie ryzyko"),  cex=1)
boxplot(ramka$wiek~ramka$ryzyko, main="Wykres ramka wąsy wg wieku",cex.main=0.96, ylab="wiek", xlab="ryzyko")