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(ggplot2)
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
str(iris)
## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
summary_petal <- iris %>%
group_by(Species) %>%
summarise(
mean_petal = mean(Petal.Length),
sd_petal = sd(Petal.Length),
max_petal = max(Petal.Length)
)
summary_petal
## # A tibble: 3 × 4
## Species mean_petal sd_petal max_petal
## <fct> <dbl> <dbl> <dbl>
## 1 setosa 1.46 0.174 1.9
## 2 versicolor 4.26 0.470 5.1
## 3 virginica 5.55 0.552 6.9
ggplot(iris, aes(x = Species, y = Sepal.Width, fill = Species)) +
geom_violin() +
labs(
title = "Violin plot of Sepal Width by Species",
x = "Species",
y = "Sepal Width"
) +
theme_minimal()
