true

Rodzaje struktur danych

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)
wiek
##  [1] 15 25 40 50 60 23 33 36 19 24

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. ( działa jak jeżeli)

ryzyko<-factor(ifelse(wiek>30,0,1),labels=c("Wysokie","Niskie"))
ryzyko
##  [1] Niskie  Niskie  Wysokie Wysokie Wysokie Niskie  Wysokie Wysokie Niskie 
## [10] Niskie 
## Levels: Wysokie Niskie
class(ryzyko) #sprawdzanie klasy czy factor itp
## [1] "factor"
str(ryzyko)
##  Factor w/ 2 levels "Wysokie","Niskie": 2 2 1 1 1 2 1 1 2 2

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),]
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

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

nazwy<-c("Grupa 1","Grupa 2")
nazwy2<-c("wiek","ryzyko")
tablica <-array(c(unlist(ramka[1:5,]),unlist(ramka[6:10,])),dim=c(5,2,2),dimnames=list(NULL,nazwy2,nazwy))
tablica
## , , Grupa 1
## 
##      wiek ryzyko
## [1,]   60      1
## [2,]   50      1
## [3,]   40      1
## [4,]   36      1
## [5,]   33      1
## 
## , , Grupa 2
## 
##      wiek ryzyko
## [1,]   25      2
## [2,]   24      2
## [3,]   23      2
## [4,]   19      2
## [5,]   15      2
tablica[3,1,2] #osoba trzecia jej wiek z grupy 2
## [1] 23
tablica[,,2]
##      wiek ryzyko
## [1,]   25      2
## [2,]   24      2
## [3,]   23      2
## [4,]   19      2
## [5,]   15      2

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,,],c("niebieski","zielony","czarny"))
names(lista)<-c("tab","kolory")
lista$kolory[1]
## [1] "niebieski"
#lista[2[1]] #dwojka bo wektor jest drugim argumentem w liscie

Macierze

Zadanie 6. Utwórz macierz kwadratową B z cyfr od 1 do 9; macierz 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)
B
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
A<-matrix(1:6,nrow=2,ncol=3)
A
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
C<-matrix(1:6,nrow=3,ncol=2)
C
##      [,1] [,2]
## [1,]    1    4
## [2,]    2    5
## [3,]    3    6
D<-rbind(A,c(1,1,1)) #dodawanie wiersza rbind
D
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
## [3,]    1    1    1
E<-cbind(C,c(1,1,1)) #dodanie kolumny cbind
E
##      [,1] [,2] [,3]
## [1,]    1    4    1
## [2,]    2    5    1
## [3,]    3    6    1
E[3,]
## [1] 3 6 1
D[,3]
## [1] 5 6 1

Analiza opisowa

**Zadanie 7**. Dokonaj pełnej analizy opisowej dla osób z grupy 1. oraz grupy 2. (średnia, odchylenia, kwartyle, skośność, kurtoza).

library(moments)
## Warning: pakiet 'moments' został zbudowany w wersji R 4.1.3
#RAZEM
summary(as.numeric(tablica[,1,2]))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    15.0    19.0    23.0    21.2    24.0    25.0
mean(as.numeric(tablica[,1,2]))
## [1] 21.2
sd(as.numeric(tablica[,1,2]))
## [1] 4.14729
quantile(as.numeric(tablica[,1,2]))
##   0%  25%  50%  75% 100% 
##   15   19   23   24   25
#skewness(as.numeric(tablica[,1,2]))
#kurtosis(as.numeric(tablica[,1,2]))

#Dla grupy 1
summary(as.numeric(tablica[,,1]))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     1.0     1.0    17.0    22.4    39.0    60.0
mean(as.numeric(tablica[,,1]))
## [1] 22.4
sd(as.numeric(tablica[,,1]))
## [1] 23.7403
quantile(as.numeric(tablica[,,1]))
##   0%  25%  50%  75% 100% 
##    1    1   17   39   60
skewness(as.numeric(tablica[,,1]))
## [1] 0.300581
kurtosis(as.numeric(tablica[,,1]))
## [1] 1.46542
#Dla grupy 2
summary(as.numeric(tablica[,,2]))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     2.0     2.0     8.5    11.6    22.0    25.0
mean(as.numeric(tablica[,,2]))
## [1] 11.6
sd(as.numeric(tablica[,,2]))
## [1] 10.4902
quantile(as.numeric(tablica[,,2]))
##   0%  25%  50%  75% 100% 
##  2.0  2.0  8.5 22.0 25.0
skewness(as.numeric(tablica[,,2]))
## [1] 0.184157
kurtosis(as.numeric(tablica[,,2]))
## [1] 1.20679

**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[ryzyko=="Niskie",1],main="Histogram 1",col=rainbow(20),breaks = 4)
hist(ramka[ryzyko=="Wysokie",1],main="Histogram 2",col=rainbow(20),breaks=4)

boxplot(ramka$wiek,ramka$ryzyko)

## Fajki

### Fajka bazowa

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

```{r fajka}
price |>
log() |>
density() |>
plot()
```

### Fajka %>%

**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:

```{r zadanie, echo=FALSE}
dane %>%
filter(type==“Condo” & beds==2) %>%
ggplot(aes(price)) +
geom_histogram(bins=8)
```

Bez użycia filtra i fajek nie ma takiej potrzeby:

```{r zadanie2, echo=FALSE}
dane2<-dane[type==“Condo” & beds==2,]
hist(dane2$price)
```