# Đặt seed để kết quả có thể lặp lại

set.seed(123)

# Sinh 600 giá trị từ N(40, 12^2)

x <- rnorm(n = 600, mean = 40, sd = 12)

# Xem 6 giá trị đầu

head(x)
## [1] 33.27429 37.23787 58.70450 40.84610 41.55145 60.58078
# Kiểm định Shapiro-Wilk

shapiro.test(x)
## 
##  Shapiro-Wilk normality test
## 
## data:  x
## W = 0.99873, p-value = 0.9518
# Gán dữ liệu iris

data <- iris

# Xem cấu trúc dữ liệu

str(data)
## '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 ...
aggregate(

  Sepal.Width ~ Species,
  
  data = data,
  
  FUN = mean
  
)
##      Species Sepal.Width
## 1     setosa       3.428
## 2 versicolor       2.770
## 3  virginica       2.974
aggregate(

  Sepal.Width ~ Species,
  
  data = data,
  FUN = var
)
##      Species Sepal.Width
## 1     setosa  0.14368980
## 2 versicolor  0.09846939
## 3  virginica  0.10400408
boxplot(

  Sepal.Width ~ Species,
  data = data,
  
  main = "Boxplot Sepal Width theo loài hoa",
  
  xlab = "Loài hoa",
  
  ylab = "Sepal Width",
  
  col = c("lightblue", "lightgreen", "lightpink")
)