Pertemuan 13-Wrangling
## Warning: package 'dplyr' 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
## starting httpd help server ... done
## 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.
## [1] "tbl_df" "tbl" "data.frame"
## # A tibble: 6 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
## Rows: 150
## Columns: 5
## $ Sepal.Length <dbl> 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9, 5.4, 4.…
## $ Sepal.Width <dbl> 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.…
## $ Petal.Length <dbl> 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.…
## $ Petal.Width <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.…
## $ Species <fct> setosa, setosa, setosa, setosa, setosa, setosa, setosa, s…
## [1] TRUE
## [1] 5.843333
## [1] TRUE
## [1] 0.109 0.359 0.630 0.996 0.515 0.142 0.017 0.829 0.907
## [1] 3.3 1.8 1.6 0.5 0.3 0.1 48.8 1.1
## [1] 3.3 1.8 1.6 0.5 0.3 0.1 48.8 1.1
Data Filtering
Data filtering digunakan untuk memilih subset dari dataset berdasarkan kondisi tertentu.
Mengambil bunga iris dengan Petal.Width lebih dari 2.0 cm
## # A tibble: 6 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 6.3 3.3 6 2.5 virginica
## 2 7.1 3 5.9 2.1 virginica
## 3 6.5 3 5.8 2.2 virginica
## 4 7.6 3 6.6 2.1 virginica
## 5 7.2 3.6 6.1 2.5 virginica
## 6 6.8 3 5.5 2.1 virginica
Mengambil data dari Petal.Width, Species, Petal.Length
## # A tibble: 50 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
## 7 4.6 3.4 1.4 0.3 setosa
## 8 5 3.4 1.5 0.2 setosa
## 9 4.4 2.9 1.4 0.2 setosa
## 10 4.9 3.1 1.5 0.1 setosa
## # ℹ 40 more rows
## # A tibble: 150 × 3
## Petal.Width Species Petal.Length
## <dbl> <fct> <dbl>
## 1 0.2 setosa 1.4
## 2 0.2 setosa 1.4
## 3 0.2 setosa 1.3
## 4 0.2 setosa 1.5
## 5 0.2 setosa 1.4
## 6 0.4 setosa 1.7
## 7 0.3 setosa 1.4
## 8 0.2 setosa 1.5
## 9 0.2 setosa 1.4
## 10 0.1 setosa 1.5
## # ℹ 140 more rows
## # A tibble: 150 × 3
## Sepal.Length Sepal.Width Petal.Length
## <dbl> <dbl> <dbl>
## 1 5.1 3.5 1.4
## 2 4.9 3 1.4
## 3 4.7 3.2 1.3
## 4 4.6 3.1 1.5
## 5 5 3.6 1.4
## 6 5.4 3.9 1.7
## 7 4.6 3.4 1.4
## 8 5 3.4 1.5
## 9 4.4 2.9 1.4
## 10 4.9 3.1 1.5
## # ℹ 140 more rows
Data Arranging
Data arranging digunakan untuk mengurutkan data berdasarkan satu atau lebih variabel.
Mengurutkan berdasarkan peubah sepale.length dari nilai terkecil
## # A tibble: 150 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 4.3 3 1.1 0.1 setosa
## 2 4.4 2.9 1.4 0.2 setosa
## 3 4.4 3 1.3 0.2 setosa
## 4 4.4 3.2 1.3 0.2 setosa
## 5 4.5 2.3 1.3 0.3 setosa
## 6 4.6 3.1 1.5 0.2 setosa
## 7 4.6 3.4 1.4 0.3 setosa
## 8 4.6 3.6 1 0.2 setosa
## 9 4.6 3.2 1.4 0.2 setosa
## 10 4.7 3.2 1.3 0.2 setosa
## # ℹ 140 more rows
Mengurutkan berdasarkan peubah Sepal.Length dari nilai terbesar
## # A tibble: 150 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 7.9 3.8 6.4 2 virginica
## 2 7.7 3.8 6.7 2.2 virginica
## 3 7.7 2.6 6.9 2.3 virginica
## 4 7.7 2.8 6.7 2 virginica
## 5 7.7 3 6.1 2.3 virginica
## 6 7.6 3 6.6 2.1 virginica
## 7 7.4 2.8 6.1 1.9 virginica
## 8 7.3 2.9 6.3 1.8 virginica
## 9 7.2 3.6 6.1 2.5 virginica
## 10 7.2 3.2 6 1.8 virginica
## # ℹ 140 more rows
Data Reshaping
Data reshaping melibatkan pengubahan struktur dataset, seperti dari wide ke long format atau sebaliknya.
Mengubah data dari format wide ke long
long_iris <- pivot_longer(iris, cols = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width), names_to = "Measurement", values_to = "Value")
head(long_iris)## # A tibble: 6 × 3
## Species Measurement Value
## <fct> <chr> <dbl>
## 1 setosa Sepal.Length 5.1
## 2 setosa Sepal.Width 3.5
## 3 setosa Petal.Length 1.4
## 4 setosa Petal.Width 0.2
## 5 setosa Sepal.Length 4.9
## 6 setosa Sepal.Width 3
Mengubah data dari format wide ke long, dimana kita “memanjangkan” data berdasarkan pengukuran sepal dan petal.
Data Merging
Data merging digunakan untuk menggabungkan dua dataset berdasarkan satu atau lebih key.
Menambahkan contoh data eksternal
additional_data <- data.frame(Species = c("setosa", "versicolor", "virginica"), Info = c("Type A", "Type B", "Type C"))
merged_iris <- left_join(iris, additional_data, by = "Species")
head(merged_iris)## # A tibble: 6 × 6
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species Info
## <dbl> <dbl> <dbl> <dbl> <chr> <chr>
## 1 5.1 3.5 1.4 0.2 setosa Type A
## 2 4.9 3 1.4 0.2 setosa Type A
## 3 4.7 3.2 1.3 0.2 setosa Type A
## 4 4.6 3.1 1.5 0.2 setosa Type A
## 5 5 3.6 1.4 0.2 setosa Type A
## 6 5.4 3.9 1.7 0.4 setosa Type A
Menambahkan contoh data eksternal untuk digabungkan. Misalnya, data eksternal ini berisi informasi tambahan tentang spesies.
Data Aggregating
Data aggregating digunakan untuk menghitung summary statistics dari data berdasarkan grup tertentu.
Feature Engineering (Variable Transformation)
Feature engineering melibatkan pembuatan variabel baru yang dapat meningkatkan kinerja model.
Menambah peubah baru
## # A tibble: 50 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
## 7 4.6 3.4 1.4 0.3 setosa
## 8 5 3.4 1.5 0.2 setosa
## 9 4.4 2.9 1.4 0.2 setosa
## 10 4.9 3.1 1.5 0.1 setosa
## # ℹ 40 more rows
irisbaru <- iris %>% select(-Species, -Petal.Width) %>% mutate(Sepal=Sepal.Length+Sepal.Width)
irisbaru## # A tibble: 150 × 4
## Sepal.Length Sepal.Width Petal.Length Sepal
## <dbl> <dbl> <dbl> <dbl>
## 1 5.1 3.5 1.4 8.6
## 2 4.9 3 1.4 7.9
## 3 4.7 3.2 1.3 7.9
## 4 4.6 3.1 1.5 7.7
## 5 5 3.6 1.4 8.6
## 6 5.4 3.9 1.7 9.3
## 7 4.6 3.4 1.4 8
## 8 5 3.4 1.5 8.4
## 9 4.4 2.9 1.4 7.3
## 10 4.9 3.1 1.5 8
## # ℹ 140 more rows
## # A tibble: 6 × 6
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Area
## <dbl> <dbl> <dbl> <dbl> <fct> <dbl>
## 1 5.1 3.5 1.4 0.2 setosa 17.8
## 2 4.9 3 1.4 0.2 setosa 14.7
## 3 4.7 3.2 1.3 0.2 setosa 15.0
## 4 4.6 3.1 1.5 0.2 setosa 14.3
## 5 5 3.6 1.4 0.2 setosa 18
## 6 5.4 3.9 1.7 0.4 setosa 21.1
Membuat variabel baru yang merupakan hasil perkalian Sepal.Length dengan Sepal.Width.
Penggunaan 2 Fungsi Bersamaan
## # A tibble: 52 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 7.9 3.8 6.4 2 virginica
## 2 7.7 3.8 6.7 2.2 virginica
## 3 7.7 2.6 6.9 2.3 virginica
## 4 7.7 2.8 6.7 2 virginica
## 5 7.7 3 6.1 2.3 virginica
## 6 7.6 3 6.6 2.1 virginica
## 7 7.4 2.8 6.1 1.9 virginica
## 8 7.3 2.9 6.3 1.8 virginica
## 9 7.2 3.6 6.1 2.5 virginica
## 10 7.2 3.2 6 1.8 virginica
## # ℹ 42 more rows
Menyaring data iris untuk mendapatkan bunga dengan Petal.Width lebih besar dari 1.5 cm, kemudian mengurutkan hasilnya berdasarkan Sepal.Length secara descending.
result2 <- iris %>%
mutate(Sepal.Area = Sepal.Length * Sepal.Width) %>%
select(Species, Sepal.Length, Sepal.Width, Sepal.Area)
head(result2)## # A tibble: 6 × 4
## Species Sepal.Length Sepal.Width Sepal.Area
## <fct> <dbl> <dbl> <dbl>
## 1 setosa 5.1 3.5 17.8
## 2 setosa 4.9 3 14.7
## 3 setosa 4.7 3.2 15.0
## 4 setosa 4.6 3.1 14.3
## 5 setosa 5 3.6 18
## 6 setosa 5.4 3.9 21.1
Membuat kolom baru yang merupakan hasil perkalian antara Sepal.Length dan Sepal.Width, yang kita sebut Sepal.Area, lalu memilih hanya beberapa kolom tertentu untuk ditampilkan.