First, load in the packages and data set.

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ readr     2.1.5
## ✔ ggplot2   3.5.1     ✔ stringr   1.5.1
## ✔ lubridate 1.9.4     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
data(iris)

Question 1

glimpse(iris)
## Rows: 150
## Columns: 5
## $ Sepal.Length <dbl> 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9, 5.4, 4.…
## $ Sepal.Width  <dbl> 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.…
## $ Petal.Length <dbl> 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.…
## $ Petal.Width  <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.…
## $ Species      <fct> setosa, setosa, setosa, setosa, setosa, setosa, setosa, s…

There are 150 observations of 5 variables in the iris data set.

Question 2

iris1 <- iris%>%
  filter(Species %in% c("versicolor", "virginica"),Sepal.Length>6, Sepal.Width>2.5)
glimpse(iris1)
## Rows: 56
## Columns: 5
## $ Sepal.Length <dbl> 7.0, 6.4, 6.9, 6.5, 6.3, 6.6, 6.1, 6.7, 6.1, 6.1, 6.4, 6.…
## $ Sepal.Width  <dbl> 3.2, 3.2, 3.1, 2.8, 3.3, 2.9, 2.9, 3.1, 2.8, 2.8, 2.9, 3.…
## $ Petal.Length <dbl> 4.7, 4.5, 4.9, 4.6, 4.7, 4.6, 4.7, 4.4, 4.0, 4.7, 4.3, 4.…
## $ Petal.Width  <dbl> 1.4, 1.5, 1.5, 1.5, 1.6, 1.3, 1.4, 1.4, 1.3, 1.2, 1.3, 1.…
## $ Species      <fct> versicolor, versicolor, versicolor, versicolor, versicolo…

There are 56 observations of 5 variables in iris1.

Question 3

iris2 <- iris1%>%
  select(Species, Sepal.Length, Sepal.Width)
glimpse(iris2)
## Rows: 56
## Columns: 3
## $ Species      <fct> versicolor, versicolor, versicolor, versicolor, versicolo…
## $ Sepal.Length <dbl> 7.0, 6.4, 6.9, 6.5, 6.3, 6.6, 6.1, 6.7, 6.1, 6.1, 6.4, 6.…
## $ Sepal.Width  <dbl> 3.2, 3.2, 3.1, 2.8, 3.3, 2.9, 2.9, 3.1, 2.8, 2.8, 2.9, 3.…

There are 56 observations of 3 variables in iris2.

Question 4

iris3 <- iris2 %>%
  arrange(desc(Sepal.Length))
head(iris3)
##     Species Sepal.Length Sepal.Width
## 1 virginica          7.9         3.8
## 2 virginica          7.7         3.8
## 3 virginica          7.7         2.6
## 4 virginica          7.7         2.8
## 5 virginica          7.7         3.0
## 6 virginica          7.6         3.0

Question 5

iris4 <- iris3 %>%
  mutate(Sepal.Area = Sepal.Length*Sepal.Width)
glimpse(iris4)
## Rows: 56
## Columns: 4
## $ Species      <fct> virginica, virginica, virginica, virginica, virginica, vi…
## $ Sepal.Length <dbl> 7.9, 7.7, 7.7, 7.7, 7.7, 7.6, 7.4, 7.3, 7.2, 7.2, 7.2, 7.…
## $ Sepal.Width  <dbl> 3.8, 3.8, 2.6, 2.8, 3.0, 3.0, 2.8, 2.9, 3.6, 3.2, 3.0, 3.…
## $ Sepal.Area   <dbl> 30.02, 29.26, 20.02, 21.56, 23.10, 22.80, 20.72, 21.17, 2…

There are 56 observations of 4 variables in iris4.

Question 6

iris5 <- iris4 %>%
  summarise(Avg.Sepal.Length = mean(Sepal.Length), Avg.Sepal.Width=mean(Sepal.Width), Sample.Size= n())
print(iris5)
##   Avg.Sepal.Length Avg.Sepal.Width Sample.Size
## 1         6.698214        3.041071          56

Question 7

iris6 <- iris4 %>%
  group_by(Species) %>%
  summarise(Avg.Sepal.Length = mean(Sepal.Length), Avg.Sepal.Width=mean(Sepal.Width), Sample.Size= n())
print(iris6)
## # A tibble: 2 × 4
##   Species    Avg.Sepal.Length Avg.Sepal.Width Sample.Size
##   <fct>                 <dbl>           <dbl>       <int>
## 1 versicolor             6.48            2.99          17
## 2 virginica              6.79            3.06          39

Question 8

irisFinal <- iris %>%
  filter(Species %in% c("versicolor", "virginica"),Sepal.Length>6, Sepal.Width>2.5) %>%
  select(Species, Sepal.Length, Sepal.Width) %>%
  arrange(desc(Sepal.Length)) %>%
  mutate(Sepal.Area = Sepal.Length*Sepal.Width) %>%
  group_by(Species) %>%
  summarise(Avg.Sepal.Length = mean(Sepal.Length), Avg.Sepal.Width=mean(Sepal.Width), Sample.Size= n())
print(irisFinal)
## # A tibble: 2 × 4
##   Species    Avg.Sepal.Length Avg.Sepal.Width Sample.Size
##   <fct>                 <dbl>           <dbl>       <int>
## 1 versicolor             6.48            2.99          17
## 2 virginica              6.79            3.06          39

Question 9

longiris <- iris %>%
  pivot_longer(cols=1:4, names_to="Measure", values_to="Value")
head(longiris)
## # A tibble: 6 × 3
##   Species Measure      Value
##   <fct>   <chr>        <dbl>
## 1 setosa  Sepal.Length   5.1
## 2 setosa  Sepal.Width    3.5
## 3 setosa  Petal.Length   1.4
## 4 setosa  Petal.Width    0.2
## 5 setosa  Sepal.Length   4.9
## 6 setosa  Sepal.Width    3