library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.3     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.2     
## ── 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
library(magrittr)
## 
## Attaching package: 'magrittr'
## 
## The following object is masked from 'package:purrr':
## 
##     set_names
## 
## The following object is masked from 'package:tidyr':
## 
##     extract
# Tạo một vectơ và thực hiện các phép biến đổi liên tiếp
vect <- c(1, 2, 3, 4, 5)

result <- vect %>%
  sqrt() %>%
  log() %>%
  round(2)

print(result)
## [1] 0.00 0.35 0.55 0.69 0.80
library(magrittr)

# Tạo một vectơ và thực hiện biến đổi trực tiếp lên nó
vect <- c(1, 2, 3, 4, 5)

vect %<>%
  sqrt() %>%
  log() %>%
  round(2)

print(vect)
## [1] 0.00 0.35 0.55 0.69 0.80
# Tạo một vectơ và thực hiện biến đổi, hiển thị kết quả trước và sau
vect <- c(1, 2, 3, 4, 5)

vect %T>%
{
  print("Before transformation:")
  print(.)
  . <- sqrt(.) %>% log() %>% round(2)
  print("After transformation:")
  print(.)
}
## [1] "Before transformation:"
## [1] 1 2 3 4 5
## [1] "After transformation:"
## [1] 0.00 0.35 0.55 0.69 0.80
## [1] 0.00 0.35 0.55 0.69 0.80
# Tạo một danh sách
data_list <- list(name = "Alice", age = 25)

# Truy xuất giá trị từ danh sách
name <- data_list %>% extract2("name")
age <- data_list %>% extract2("age")

print(name)
## [1] "Alice"
print(age)
## [1] 25
# Tạo một tập dữ liệu
data_frame <- data.frame(x = c(1, 2, 3), y = c(4, 5, 6))

# Sử dụng with() để thực hiện phép biến đổi
result <- with(data_frame, x + y)

print(result)
## [1] 5 7 9
# Sử dụng cơ sở dữ liệu iris và thực hiện các phép biến đổi liên tiếp
iris_result <- iris %>%
  filter(Species == "setosa") %>%
  select(Sepal.Length, Sepal.Width)

print(head(iris_result))
##   Sepal.Length Sepal.Width
## 1          5.1         3.5
## 2          4.9         3.0
## 3          4.7         3.2
## 4          4.6         3.1
## 5          5.0         3.6
## 6          5.4         3.9
# Sử dụng cơ sở dữ liệu iris và thực hiện biến đổi trực tiếp lên đối tượng
iris %<>%
  mutate(Sepal.Area = Sepal.Length * Sepal.Width)

print(head(iris))
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Area
## 1          5.1         3.5          1.4         0.2  setosa      17.85
## 2          4.9         3.0          1.4         0.2  setosa      14.70
## 3          4.7         3.2          1.3         0.2  setosa      15.04
## 4          4.6         3.1          1.5         0.2  setosa      14.26
## 5          5.0         3.6          1.4         0.2  setosa      18.00
## 6          5.4         3.9          1.7         0.4  setosa      21.06
# Sử dụng cơ sở dữ liệu iris và hiển thị giá trị trước và sau phép biến đổi
iris %>%
  {
    print("Before transformation:")
    print(head(.))
    . <- filter(., Species == "virginica")
    print("After transformation:")
    print(head(.))
  }
## [1] "Before transformation:"
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Area
## 1          5.1         3.5          1.4         0.2  setosa      17.85
## 2          4.9         3.0          1.4         0.2  setosa      14.70
## 3          4.7         3.2          1.3         0.2  setosa      15.04
## 4          4.6         3.1          1.5         0.2  setosa      14.26
## 5          5.0         3.6          1.4         0.2  setosa      18.00
## 6          5.4         3.9          1.7         0.4  setosa      21.06
## [1] "After transformation:"
##   Sepal.Length Sepal.Width Petal.Length Petal.Width   Species Sepal.Area
## 1          6.3         3.3          6.0         2.5 virginica      20.79
## 2          5.8         2.7          5.1         1.9 virginica      15.66
## 3          7.1         3.0          5.9         2.1 virginica      21.30
## 4          6.3         2.9          5.6         1.8 virginica      18.27
## 5          6.5         3.0          5.8         2.2 virginica      19.50
## 6          7.6         3.0          6.6         2.1 virginica      22.80