library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ 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(datasets)
data("ToothGrowth")
TG <- tibble::as_tibble(ToothGrowth)
view(TG)
class(TG)
## [1] "tbl_df" "tbl" "data.frame"
head(TG)
## # A tibble: 6 × 3
## len supp dose
## <dbl> <fct> <dbl>
## 1 4.2 VC 0.5
## 2 11.5 VC 0.5
## 3 7.3 VC 0.5
## 4 5.8 VC 0.5
## 5 6.4 VC 0.5
## 6 10 VC 0.5
glimpse(TG)
## Rows: 60
## Columns: 3
## $ len <dbl> 4.2, 11.5, 7.3, 5.8, 6.4, 10.0, 11.2, 11.2, 5.2, 7.0, 16.5, 16.5,…
## $ supp <fct> VC, VC, VC, VC, VC, VC, VC, VC, VC, VC, VC, VC, VC, VC, VC, VC, V…
## $ dose <dbl> 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0, 1.0, 1.0, …
summary(TG)
## len supp dose
## Min. : 4.20 OJ:30 Min. :0.500
## 1st Qu.:13.07 VC:30 1st Qu.:0.500
## Median :19.25 Median :1.000
## Mean :18.81 Mean :1.167
## 3rd Qu.:25.27 3rd Qu.:2.000
## Max. :33.90 Max. :2.000
#Fungsi summarize untuk menampilkan rata-rata pertumbuhan gigi berdasarkan suplemen yang diberikan
rataan_tumbuh <- TG %>% group_by(supp) %>% summarize(ratarata_pertumbuhan = mean(len))
rataan_tumbuh
## # A tibble: 2 × 2
## supp ratarata_pertumbuhan
## <fct> <dbl>
## 1 OJ 20.7
## 2 VC 17.0
#Fungsi arrange untuk mengurutkan pertumbuhan gigi dari terbesar ke terkecil
TG %>% arrange(desc(len))
## # A tibble: 60 × 3
## len supp dose
## <dbl> <fct> <dbl>
## 1 33.9 VC 2
## 2 32.5 VC 2
## 3 30.9 OJ 2
## 4 29.5 VC 2
## 5 29.4 OJ 2
## 6 27.3 OJ 1
## 7 27.3 OJ 2
## 8 26.7 VC 2
## 9 26.4 VC 2
## 10 26.4 OJ 1
## # ℹ 50 more rows
#Fungsi filter untuk menampilkan data pertumbuhan gigi berdasarkan suplemen yang diberikan dosis sebesar 0.5
TG %>% filter(dose=="0.5")
## # A tibble: 20 × 3
## len supp dose
## <dbl> <fct> <dbl>
## 1 4.2 VC 0.5
## 2 11.5 VC 0.5
## 3 7.3 VC 0.5
## 4 5.8 VC 0.5
## 5 6.4 VC 0.5
## 6 10 VC 0.5
## 7 11.2 VC 0.5
## 8 11.2 VC 0.5
## 9 5.2 VC 0.5
## 10 7 VC 0.5
## 11 15.2 OJ 0.5
## 12 21.5 OJ 0.5
## 13 17.6 OJ 0.5
## 14 9.7 OJ 0.5
## 15 14.5 OJ 0.5
## 16 10 OJ 0.5
## 17 8.2 OJ 0.5
## 18 9.4 OJ 0.5
## 19 16.5 OJ 0.5
## 20 9.7 OJ 0.5
#Fungsi select untuk menampilkan tabel tanpa kolom dose
TG %>% select(-dose)
## # A tibble: 60 × 2
## len supp
## <dbl> <fct>
## 1 4.2 VC
## 2 11.5 VC
## 3 7.3 VC
## 4 5.8 VC
## 5 6.4 VC
## 6 10 VC
## 7 11.2 VC
## 8 11.2 VC
## 9 5.2 VC
## 10 7 VC
## # ℹ 50 more rows
#Fungsi mutate
TG %>% mutate(tooth=len/dose)
## # A tibble: 60 × 4
## len supp dose tooth
## <dbl> <fct> <dbl> <dbl>
## 1 4.2 VC 0.5 8.4
## 2 11.5 VC 0.5 23
## 3 7.3 VC 0.5 14.6
## 4 5.8 VC 0.5 11.6
## 5 6.4 VC 0.5 12.8
## 6 10 VC 0.5 20
## 7 11.2 VC 0.5 22.4
## 8 11.2 VC 0.5 22.4
## 9 5.2 VC 0.5 10.4
## 10 7 VC 0.5 14
## # ℹ 50 more rows
#Fungsi ketika digunakan bersama-sama
#Menampilkan rataan pertumbuhan gigi yang lebih besar atau sama dengan 10 per dosisnya tanpa melihat suplemen yang digunakan
TG %>% select(-supp) %>% group_by(dose) %>% filter(len >= "10") %>% summarize(rataan = mean(len)) %>% arrange(rataan) %>% mutate(dosexrataan=dose*rataan)
## # A tibble: 3 × 3
## dose rataan dosexrataan
## <dbl> <dbl> <dbl>
## 1 0.5 10.6 5.30
## 2 1 19.7 19.7
## 3 2 26.1 52.2