##Inisiasi

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.2
## Warning: package 'ggplot2' was built under R version 4.4.2
## Warning: package 'tibble' was built under R version 4.4.2
## Warning: package 'tidyr' was built under R version 4.4.2
## Warning: package 'readr' was built under R version 4.4.2
## Warning: package 'purrr' was built under R version 4.4.2
## Warning: package 'dplyr' was built under R version 4.4.2
## Warning: package 'stringr' was built under R version 4.4.2
## Warning: package 'forcats' was built under R version 4.4.2
## Warning: package 'lubridate' was built under R version 4.4.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ 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(starwars)
starwars <- tibble::as_tibble(starwars)
library(dplyr)
class(starwars)
## [1] "tbl_df"     "tbl"        "data.frame"
head(starwars)
## # A tibble: 6 × 14
##   name      height  mass hair_color skin_color eye_color birth_year sex   gender
##   <chr>      <int> <dbl> <chr>      <chr>      <chr>          <dbl> <chr> <chr> 
## 1 Luke Sky…    172    77 blond      fair       blue            19   male  mascu…
## 2 C-3PO        167    75 <NA>       gold       yellow         112   none  mascu…
## 3 R2-D2         96    32 <NA>       white, bl… red             33   none  mascu…
## 4 Darth Va…    202   136 none       white      yellow          41.9 male  mascu…
## 5 Leia Org…    150    49 brown      light      brown           19   fema… femin…
## 6 Owen Lars    178   120 brown, gr… light      blue            52   male  mascu…
## # ℹ 5 more variables: homeworld <chr>, species <chr>, films <list>,
## #   vehicles <list>, starships <list>

##Penggunaan Fungsi

###Memilih Kolom Tertentu: Select()

starwars %>% select(name, height, mass)
## # A tibble: 87 × 3
##    name               height  mass
##    <chr>               <int> <dbl>
##  1 Luke Skywalker        172    77
##  2 C-3PO                 167    75
##  3 R2-D2                  96    32
##  4 Darth Vader           202   136
##  5 Leia Organa           150    49
##  6 Owen Lars             178   120
##  7 Beru Whitesun Lars    165    75
##  8 R5-D4                  97    32
##  9 Biggs Darklighter     183    84
## 10 Obi-Wan Kenobi        182    77
## # ℹ 77 more rows

###Menyaring berdasarkan kondisi tertentu: filter()

filtered_height <- filter(starwars, height > 170)
head(filtered_height)
## # A tibble: 6 × 14
##   name      height  mass hair_color skin_color eye_color birth_year sex   gender
##   <chr>      <int> <dbl> <chr>      <chr>      <chr>          <dbl> <chr> <chr> 
## 1 Luke Sky…    172    77 blond      fair       blue            19   male  mascu…
## 2 Darth Va…    202   136 none       white      yellow          41.9 male  mascu…
## 3 Owen Lars    178   120 brown, gr… light      blue            52   male  mascu…
## 4 Biggs Da…    183    84 black      light      brown           24   male  mascu…
## 5 Obi-Wan …    182    77 auburn, w… fair       blue-gray       57   male  mascu…
## 6 Anakin S…    188    84 blond      fair       blue            41.9 male  mascu…
## # ℹ 5 more variables: homeworld <chr>, species <chr>, films <list>,
## #   vehicles <list>, starships <list>

###Membuat kolom baru: mutate()

starwars_bmi <- starwars %>% mutate(BMI = mass / (height / 100)^2)
starwars_bmi
## # A tibble: 87 × 15
##    name     height  mass hair_color skin_color eye_color birth_year sex   gender
##    <chr>     <int> <dbl> <chr>      <chr>      <chr>          <dbl> <chr> <chr> 
##  1 Luke Sk…    172    77 blond      fair       blue            19   male  mascu…
##  2 C-3PO       167    75 <NA>       gold       yellow         112   none  mascu…
##  3 R2-D2        96    32 <NA>       white, bl… red             33   none  mascu…
##  4 Darth V…    202   136 none       white      yellow          41.9 male  mascu…
##  5 Leia Or…    150    49 brown      light      brown           19   fema… femin…
##  6 Owen La…    178   120 brown, gr… light      blue            52   male  mascu…
##  7 Beru Wh…    165    75 brown      light      blue            47   fema… femin…
##  8 R5-D4        97    32 <NA>       white, red red             NA   none  mascu…
##  9 Biggs D…    183    84 black      light      brown           24   male  mascu…
## 10 Obi-Wan…    182    77 auburn, w… fair       blue-gray       57   male  mascu…
## # ℹ 77 more rows
## # ℹ 6 more variables: homeworld <chr>, species <chr>, films <list>,
## #   vehicles <list>, starships <list>, BMI <dbl>

###Mengurutkan data: arrange()

starwars %>% arrange(desc(mass))
## # A tibble: 87 × 14
##    name     height  mass hair_color skin_color eye_color birth_year sex   gender
##    <chr>     <int> <dbl> <chr>      <chr>      <chr>          <dbl> <chr> <chr> 
##  1 Jabba D…    175  1358 <NA>       green-tan… orange         600   herm… mascu…
##  2 Grievous    216   159 none       brown, wh… green, y…       NA   male  mascu…
##  3 IG-88       200   140 none       metal      red             15   none  mascu…
##  4 Darth V…    202   136 none       white      yellow          41.9 male  mascu…
##  5 Tarfful     234   136 brown      brown      blue            NA   male  mascu…
##  6 Owen La…    178   120 brown, gr… light      blue            52   male  mascu…
##  7 Bossk       190   113 none       green      red             53   male  mascu…
##  8 Chewbac…    228   112 brown      unknown    blue           200   male  mascu…
##  9 Jek Ton…    180   110 brown      fair       blue            NA   <NA>  <NA>  
## 10 Dexter …    198   102 none       brown      yellow          NA   male  mascu…
## # ℹ 77 more rows
## # ℹ 5 more variables: homeworld <chr>, species <chr>, films <list>,
## #   vehicles <list>, starships <list>

###Meringkas data: sumarise()

summary_starwars <- starwars %>% summarise(avg_height = mean(height, na.rm = TRUE), avg_mass = mean(mass, na.rm = TRUE))
summary_starwars
## # A tibble: 1 × 2
##   avg_height avg_mass
##        <dbl>    <dbl>
## 1       175.     97.3

##Penggunaan 2 Fungsi bersama

###filter() & summary()

human_summary <- starwars %>% filter(species == "Human") %>% summarise(avg_height = mean(height, na.rm = TRUE), count = n())
head(human_summary)
## # A tibble: 1 × 2
##   avg_height count
##        <dbl> <int>
## 1        178    35

###mutate() & arrange()

bmi_sorted <- starwars %>% mutate(starwars_bmi = mass / (height / 100)^2) %>% arrange(desc(starwars_bmi))
head(bmi_sorted)
## # A tibble: 6 × 15
##   name      height  mass hair_color skin_color eye_color birth_year sex   gender
##   <chr>      <int> <dbl> <chr>      <chr>      <chr>          <dbl> <chr> <chr> 
## 1 Jabba De…    175  1358 <NA>       green-tan… orange           600 herm… mascu…
## 2 Dud Bolt      94    45 none       blue, grey yellow            NA male  mascu…
## 3 Yoda          66    17 white      green      brown            896 male  mascu…
## 4 Owen Lars    178   120 brown, gr… light      blue              52 male  mascu…
## 5 IG-88        200   140 none       metal      red               15 none  mascu…
## 6 R2-D2         96    32 <NA>       white, bl… red               33 none  mascu…
## # ℹ 6 more variables: homeworld <chr>, species <chr>, films <list>,
## #   vehicles <list>, starships <list>, starwars_bmi <dbl>