Zadanie 4

Dzień dobry! Ja zajmuję się zadaniem 4, które dotyczy kwiatuszków. :)

Wczytaj dane iris (data(iris)). Przefiltruj dane tak aby nie zawierały gatunku “setosa”. Napisz pętlę, która będzie liczyła wartość średnią “Sepal.Length” dla każdego z gatunków. Wyodrębnij z ramki danych tylko 2 i 4 kolumnę i wyświetl 3 pierwsze wiersze z tak uzyskanego zbioru danych.

Na początku, wywołuję zbiór danych iris za pomocą komendy data(). Dodatkowo, przypisuję iris do nowej zmiennej.

data("iris")
df <- iris

Następnie, sprawdzam czy wszystko się zgadza tworząc tabelę ze zbioru danych iris. Wykorzystuję do tego komendę head().

head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

Teraz przechodzę do dalszej części polecenia - pozbywam się ze zbioru danych gatunku setosa. Filtruję zbiór danych za pomocą operatora “różne od” - !=.

df_filtered <- df[df$Species != "setosa", ]

I sprawdzam, czy zadziałało…

unique(df_filtered$Species)
## [1] versicolor virginica 
## Levels: setosa versicolor virginica

…zadziałało, więc przechodzę dalej, czyli do utworzenia pętli która będzie liczyła wartość średnią “Sepal.Length” dla każdego z gatunków.

Najpierw pobieram listę interesujących mnie gatunków - versicolor i virginica. Za pomocą znaku $, wyciągam konkretną kolumnę z ramki danych.

gatunki <- unique(df_filtered$Species)

Następnie tworzę pętlę liczącą średnią Sepal.Length ze schematem poznanym na ćwiczeniach:

for (iterator in kolekcja){ instrukcja }

I od razu sprawdzam, czy działa (tak, działa).

for (g in gatunki) {
  srednia <- mean(df_filtered$Sepal.Length[df_filtered$Species == g])
  print(paste("Gatunek:", g, "| Średnia Sepal.Length:", round(srednia, 2)))
}
## [1] "Gatunek: versicolor | Średnia Sepal.Length: 5.94"
## [1] "Gatunek: virginica | Średnia Sepal.Length: 6.59"

Teraz przechodzę do (przed)ostatniej części zadania, czyli wyodrębnienia z ramki danych tylko 2 (Sepal.Width) i 4 (Sepal.Length) kolumny, poprzez zdefiniowanie “nowego” zbioru danych…

nowy_zbior <- df_filtered[, c(2, 4)]

… i wyświetlenia 3 pierwszych wierszy z “nowego” zbioru danych z użyciem komendy print.

print(head(nowy_zbior, 3))
##    Sepal.Width Petal.Width
## 51         3.2         1.4
## 52         3.2         1.5
## 53         3.1         1.5

Właśnie tak prezentuje się końcowa tabela. :)