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