1 Rozdział 1. Podstawowe operacje

1.1 Rodzaje struktur danych

1.1.1 Wektory

Zadanie 1. Utwórz wektor danych “ryzyko” oraz “wiek”. Każdy z nich ma mieć 10 obserwacji, dowolne wartości. Ryzyko jako zmienna 0-1, wiek w latach.

ryzyko <- c(0,1,0,1,0,1,1,1,0,0)
wiek <- c(15,25,40,50,60,23,33,36,19,24)

1.1.2 Czynnik

Zadanie 2. Utwórz wektor ryzyko na 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

1.1.3 Ramka danych

Zadanie 3. Połącz wiek i ryzyko tworząc nową ramkę danych o nazwie “ramka”. Posortuj obserwacje wg wieku (rosnąco).

ramka <- data.frame(wiek,ryzyko)
ramka <- ramka[order(wiek,decreasing = TRUE ),]
ramka
##    wiek  ryzyko
## 5    60 wysokie
## 4    50 wysokie
## 3    40 wysokie
## 8    36 wysokie
## 7    33 wysokie
## 2    25  niskie
## 10   24  niskie
## 6    23  niskie
## 9    19  niskie
## 1    15  niskie

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

tablica <- array(wiek,dim=c(5,1,2))
tablica2 <- array(c(0,1,0,1,0,1,1,1,0,0),dim=c(5,1,2))
tab <- abind(tablica,tablica2, along = 2,new.names = list(NULL,list("Wiek","Ryzyko"),list("Grupa 1","Grupa 2")))
print(tab)
## , , Grupa 1
## 
##      Wiek Ryzyko
## [1,]   15      0
## [2,]   25      1
## [3,]   40      0
## [4,]   50      1
## [5,]   60      0
## 
## , , Grupa 2
## 
##      Wiek Ryzyko
## [1,]   23      1
## [2,]   33      1
## [3,]   36      1
## [4,]   19      0
## [5,]   24      0

1.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(tab[1:3,,],c('różowy','fioletowy','czarny'))
lista[[2]][3] # wyswietlanie 3 elementu
## [1] "czarny"
#saveRDS(lista,file ="lista.RData" )
#getwd()

1.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 3 wiersze macierzy E i 3 kolumnę macierzy D.

?matrix
## uruchamianie serwera httpd dla pomocy ... wykonano
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

1.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(as.numeric(tab[,1,2]))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##      19      23      24      27      33      36
skewness(as.numeric(tab[,1,2]))
## [1] 0.258649
kurtosis(as.numeric(tab[,1,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).Połączyć wykresy, dodac legendy osie tytuł

hgA <- hist(ramka[ryzyko=="niskie",1],col=rgb(1,0,0,0,5))

hgB <- hist(ramka[ryzyko=="wysokie",1],col=rgb(0,0,1,0,5))

c1 <- rgb(173,216,230,max = 255, alpha = 80, names = "lt.blue")
c2 <- rgb(255,192,203, max = 255, alpha = 80, names = "lt.pink")

plot(hgA, col = c1, ylab = "Czestotliwosc", xlab = "Wiek", main = "Ryzykowne histogramy") + plot(hgB, col = c2, add = T) 
## integer(0)
legend("topright", legend = c("ryzyko niskie", "ryzyko wysokie"), lty = c(1,1),col = c(c1,c2), lwd = 15)

par(mfrow=c(1,2))
#hist(ramka[ryzyko=="wysokie",1],col=rgb(0,0,1,0,5), add=TRUE)
boxplot(ramka$ryzyko)
boxplot(ramka$wiek)

1.3 Fajki

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

1.4 Przykład - dplyr

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: