library(tidyverse)

library(datasets)
data("HairEyeColor")
HairEyeColor <- tibble::as.tibble(HairEyeColor)
## Warning: `as.tibble()` was deprecated in tibble 2.0.0.
## ℹ Please use `as_tibble()` instead.
## ℹ The signature and semantics have changed, see `?as_tibble`.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

install.packages(“dplyr”) library(dplyr)

class(HairEyeColor)
## [1] "tbl_df"     "tbl"        "data.frame"
head(HairEyeColor)
## # A tibble: 6 × 4
##   Hair  Eye   Sex       n
##   <chr> <chr> <chr> <dbl>
## 1 Black Brown Male     32
## 2 Brown Brown Male     53
## 3 Red   Brown Male     10
## 4 Blond Brown Male      3
## 5 Black Blue  Male     11
## 6 Brown Blue  Male     50
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.2
## 
## 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
data("HairEyeColor")

SUMMARISE

Menghitung total individu berdasarkan warna rambut dan mata

hair_eye_df <- as.data.frame(HairEyeColor)
hair_eye_summary <- hair_eye_df %>% 
  group_by(Hair, Eye) %>%
  summarise(total = sum(Freq), .groups = "drop")
hair_eye_summary
## # A tibble: 16 × 3
##    Hair  Eye   total
##    <fct> <fct> <dbl>
##  1 Black Brown    68
##  2 Black Blue     20
##  3 Black Hazel    15
##  4 Black Green     5
##  5 Brown Brown   119
##  6 Brown Blue     84
##  7 Brown Hazel    54
##  8 Brown Green    29
##  9 Red   Brown    26
## 10 Red   Blue     17
## 11 Red   Hazel    14
## 12 Red   Green    14
## 13 Blond Brown     7
## 14 Blond Blue     94
## 15 Blond Hazel    10
## 16 Blond Green    16

ARRANGE

Mengurutkan data berdasarkan jumlah total individu (kolom total) secara menurun

hair_eye_sorted <- hair_eye_summary %>% arrange(desc(total))
hair_eye_sorted
## # A tibble: 16 × 3
##    Hair  Eye   total
##    <fct> <fct> <dbl>
##  1 Brown Brown   119
##  2 Blond Blue     94
##  3 Brown Blue     84
##  4 Black Brown    68
##  5 Brown Hazel    54
##  6 Brown Green    29
##  7 Red   Brown    26
##  8 Black Blue     20
##  9 Red   Blue     17
## 10 Blond Green    16
## 11 Black Hazel    15
## 12 Red   Hazel    14
## 13 Red   Green    14
## 14 Blond Hazel    10
## 15 Blond Brown     7
## 16 Black Green     5

FILTER

Menggunakan filter() untuk memilih data dengan warna rambut “Brown” dan mata “Blue”

brown_blue_eye <- hair_eye_df %>% filter(Hair == "Brown" & Eye == "Blue")
brown_blue_eye
##    Hair  Eye    Sex Freq
## 1 Brown Blue   Male   50
## 2 Brown Blue Female   34

MUTATE

Menggunakan mutate() untuk menambahkan kolom persentase berdasarkan total individu

hair_eye_with_percentage <- hair_eye_summary %>% mutate(percentage = (total / sum(total)) * 100)
hair_eye_with_percentage
## # A tibble: 16 × 4
##    Hair  Eye   total percentage
##    <fct> <fct> <dbl>      <dbl>
##  1 Black Brown    68     11.5  
##  2 Black Blue     20      3.38 
##  3 Black Hazel    15      2.53 
##  4 Black Green     5      0.845
##  5 Brown Brown   119     20.1  
##  6 Brown Blue     84     14.2  
##  7 Brown Hazel    54      9.12 
##  8 Brown Green    29      4.90 
##  9 Red   Brown    26      4.39 
## 10 Red   Blue     17      2.87 
## 11 Red   Hazel    14      2.36 
## 12 Red   Green    14      2.36 
## 13 Blond Brown     7      1.18 
## 14 Blond Blue     94     15.9  
## 15 Blond Hazel    10      1.69 
## 16 Blond Green    16      2.70

SELECT

Menggunakan select() untuk memilih kolom tertentu, seperti Hair, Eye, dan Freq

hair_eye_selected <- hair_eye_df %>% select(Hair, Eye, Freq)
hair_eye_selected
##     Hair   Eye Freq
## 1  Black Brown   32
## 2  Brown Brown   53
## 3    Red Brown   10
## 4  Blond Brown    3
## 5  Black  Blue   11
## 6  Brown  Blue   50
## 7    Red  Blue   10
## 8  Blond  Blue   30
## 9  Black Hazel   10
## 10 Brown Hazel   25
## 11   Red Hazel    7
## 12 Blond Hazel    5
## 13 Black Green    3
## 14 Brown Green   15
## 15   Red Green    7
## 16 Blond Green    8
## 17 Black Brown   36
## 18 Brown Brown   66
## 19   Red Brown   16
## 20 Blond Brown    4
## 21 Black  Blue    9
## 22 Brown  Blue   34
## 23   Red  Blue    7
## 24 Blond  Blue   64
## 25 Black Hazel    5
## 26 Brown Hazel   29
## 27   Red Hazel    7
## 28 Blond Hazel    5
## 29 Black Green    2
## 30 Brown Green   14
## 31   Red Green    7
## 32 Blond Green    8

MERGING

Menggunakan filter() dan arrange() secara bersama

brown_blue_sorted <- hair_eye_df %>%
filter(Hair == "Brown" & Eye == "Blue") %>%
arrange(desc(Freq))
brown_blue_sorted
##    Hair  Eye    Sex Freq
## 1 Brown Blue   Male   50
## 2 Brown Blue Female   34