Manipulasi data atau lebih populernya data manipulation yaitu kegiatan dimana data atau dataset diolah atau “dimodif” agar lebih mudah dibaca dan lebih terorganisasi.
Beberapa kasus yang memerlukan teknik manipulasi data adalah saat kebutuhan analisis data (data analysis) dan visualisasi data (data visualization).
Target pada akhir bahasan ini adalah kita bisa mengenal atau familiar dengan cara-cara atau pendekatan yang diperlukan dalam mempermudah urusan melakukan manipulasi data.
Pada latihan ini, kita akan mempelajari bagaimana dengan mudah melakukan manipulasi data menggunakan bahasa R dan software RStudio. Adapun beberapa hal yang dipelajari di dalam manipulasi data yaitu:
Kita akan menggunakan salah satu paket/package yang populer yaitu dplyr, yang mana terdapat beberapa functions yang penting yang nantinya mempermudah dalam manipulasi data.
Saya sarankan untuk meng-install paket tidyverse, yang mana semua kebutuhan dasar manipulasi sudah ada di dalamanya, seperi paket dplyr (untuk manipulasi data), paket readr untuk mempermudah membaca data, paket tidyr untuk tranforming data, dan paket ggplot2 untuk visualisasi data.
Kita akan menggunakan dataset yang sudah built-in di dalam R, yaitu iris. Yang mana dataset ini nanti kita konversi menjadi tibble (tbl_df) untuk analisis data yang lebih mudah. Objek tbl_df adalah sebuah data frame yang cara printing hasil (output) yang lebih bagus, ini cocok saat mengolah data jumlah besar.
## # A tibble: 150 x 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
## # ... with 140 more rows
Terlihat output dengan konversi tibble lebih lengkap dan ringkas. Informasi yang muncul seperti terdapat 150 baris dan 5 kolom, tipe data setiap kolom, dan nomor indeks per baris.
Terdapat 8 perintah dasar yang akan sangat digunakan dalam kegiatan manipulasi data. Semua fungsi-fungsi dibawah ini sudah termasuk di dalam paket dplyr.
Pada bagian bab ini, akan dijelaskan bagaimana memanggil kolom dengan memanggil nama kolomnya atau posisi kolomnya. Akan dijelaskan juga bagaimana mengapus sebuah kolom dari data frame.
Adapun fungsi-fungsi yang akan digunakan seperti:
Masukkan paket tidyverse ke environment R atau RStudio.
Kita gunakan dataset built-in dari R yaitu iris. Konversi ke bentuk tibble untuk mempermudah analisis data.
## # A tibble: 150 x 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
## # ... with 140 more rows
## [1] setosa setosa setosa setosa setosa setosa
## [7] setosa setosa setosa setosa setosa setosa
## [13] setosa setosa setosa setosa setosa setosa
## [19] setosa setosa setosa setosa setosa setosa
## [25] setosa setosa setosa setosa setosa setosa
## [31] setosa setosa setosa setosa setosa setosa
## [37] setosa setosa setosa setosa setosa setosa
## [43] setosa setosa setosa setosa setosa setosa
## [49] setosa setosa versicolor versicolor versicolor versicolor
## [55] versicolor versicolor versicolor versicolor versicolor versicolor
## [61] versicolor versicolor versicolor versicolor versicolor versicolor
## [67] versicolor versicolor versicolor versicolor versicolor versicolor
## [73] versicolor versicolor versicolor versicolor versicolor versicolor
## [79] versicolor versicolor versicolor versicolor versicolor versicolor
## [85] versicolor versicolor versicolor versicolor versicolor versicolor
## [91] versicolor versicolor versicolor versicolor versicolor versicolor
## [97] versicolor versicolor versicolor versicolor virginica virginica
## [103] virginica virginica virginica virginica virginica virginica
## [109] virginica virginica virginica virginica virginica virginica
## [115] virginica virginica virginica virginica virginica virginica
## [121] virginica virginica virginica virginica virginica virginica
## [127] virginica virginica virginica virginica virginica virginica
## [133] virginica virginica virginica virginica virginica virginica
## [139] virginica virginica virginica virginica virginica virginica
## [145] virginica virginica virginica virginica virginica virginica
## Levels: setosa versicolor virginica
Catatan: Terdapat tanda %>% yaitu merupakan operator pipe atau biasa disebut piping. Operator pipe digunakan untuk mengambil apa yang ada sebelum pipe (%>%) dan diteruskan setelahnya. Contohnya seperti baris kode diatas, jika tidak menggunakan operator pipe perintahnya akan menjadi seperti: pull(df$species). Operator ini rekomendasi untuk digunakan.
## # A tibble: 150 x 2
## Sepal.Length Petal.Length
## <dbl> <dbl>
## 1 5.1 1.4
## 2 4.9 1.4
## 3 4.7 1.3
## 4 4.6 1.5
## 5 5 1.4
## 6 5.4 1.7
## 7 4.6 1.4
## 8 5 1.5
## 9 4.4 1.4
## 10 4.9 1.5
## # ... with 140 more rows
## # A tibble: 150 x 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
## # ... with 140 more rows
# Memanggil yang nama kolomnya diawali "Petal"
df %>% select(starts_with("Petal"))
# Memanggil yang nama kolomnya diakhiri "Width"
df %>% select(ends_with("Width"))
# Memanggil yang nama kolomnya terdapat "etal"
df %>% select(contains("etal"))
# Memanggil yang diantara nama kolomnya ada huruf "t"
df %>% select(matches(".t."))Memanggil kolom dengan kondisi berarti dimana kolom yang terpanggil yang berkondisi TRUE.
Misal, hanya memanggil kolom yang bertipe numeric:
## # A tibble: 150 x 4
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## <dbl> <dbl> <dbl> <dbl>
## 1 5.1 3.5 1.4 0.2
## 2 4.9 3 1.4 0.2
## 3 4.7 3.2 1.3 0.2
## 4 4.6 3.1 1.5 0.2
## 5 5 3.6 1.4 0.2
## 6 5.4 3.9 1.7 0.4
## 7 4.6 3.4 1.4 0.3
## 8 5 3.4 1.5 0.2
## 9 4.4 2.9 1.4 0.2
## 10 4.9 3.1 1.5 0.1
## # ... with 140 more rows
Untuk menghapus satu atau lebih kolom, diperlukan tanda minus -.
## # A tibble: 150 x 2
## Petal.Width Species
## <dbl> <fct>
## 1 0.2 setosa
## 2 0.2 setosa
## 3 0.2 setosa
## 4 0.2 setosa
## 5 0.2 setosa
## 6 0.4 setosa
## 7 0.3 setosa
## 8 0.2 setosa
## 9 0.2 setosa
## 10 0.1 setosa
## # ... with 140 more rows
## # A tibble: 150 x 3
## Sepal.Length Sepal.Width Species
## <dbl> <dbl> <fct>
## 1 5.1 3.5 setosa
## 2 4.9 3 setosa
## 3 4.7 3.2 setosa
## 4 4.6 3.1 setosa
## 5 5 3.6 setosa
## 6 5.4 3.9 setosa
## 7 4.6 3.4 setosa
## 8 5 3.4 setosa
## 9 4.4 2.9 setosa
## 10 4.9 3.1 setosa
## # ... with 140 more rows
Pada latihan manipulasi data di awal ini, kita sudah mempelajari bagaimana mengambil, memanggil, mengapus kolom berdasarkan nama, kondisi, dan posisinya. Perlu diketahui karena dipakai perintah pipe maka dataset awal iris tidak hilang atau berubah. Kecuali beberapa langsung disimpan ke dalam variable misal, df <- select(-…) maka akan berubah strukturnya.
Pada bagian latihan ini akan dijelaskan bagaimana subset atau mengambil atau mengekstrak baris dari data frame berdasarkan kriteria tertentu.
Semua perintah yang digunakan dibawah ini terdapat dalam paket dplyr, tapi tentu sudah menggunakan paket tidyverse maka tidak perlu load paket lagi.
Dataset yang digunakan tetap iris dan pastikan juga sudah konversi ke tibble. Paket yang digunakan adalah tidyverse.
## # A tibble: 6 x 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
Sebelum lanjut, ada baiknya agar kita sama-sama mengerti apa itu perbandingan dan operator logika. Yang mana hal ini sangat penting urusan filtering.
Adapun operator perbandingan “logika” yang tersedia di R seperti berikut:
## # A tibble: 12 x 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 7.1 3 5.9 2.1 virginica
## 2 7.6 3 6.6 2.1 virginica
## 3 7.3 2.9 6.3 1.8 virginica
## 4 7.2 3.6 6.1 2.5 virginica
## 5 7.7 3.8 6.7 2.2 virginica
## 6 7.7 2.6 6.9 2.3 virginica
## 7 7.7 2.8 6.7 2 virginica
## 8 7.2 3.2 6 1.8 virginica
## 9 7.2 3 5.8 1.6 virginica
## 10 7.4 2.8 6.1 1.9 virginica
## 11 7.9 3.8 6.4 2 virginica
## 12 7.7 3 6.1 2.3 virginica
## # A tibble: 10 x 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 6.8 2.8 4.8 1.4 versicolor
## 2 7.1 3 5.9 2.1 virginica
## 3 7.6 3 6.6 2.1 virginica
## 4 7.3 2.9 6.3 1.8 virginica
## 5 6.8 3 5.5 2.1 virginica
## 6 7.7 2.6 6.9 2.3 virginica
## 7 7.7 2.8 6.7 2 virginica
## 8 7.2 3 5.8 1.6 virginica
## 9 7.4 2.8 6.1 1.9 virginica
## 10 7.7 3 6.1 2.3 virginica
## # A tibble: 8 x 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 7 3.2 4.7 1.4 versicolor
## 2 6.9 3.1 4.9 1.5 versicolor
## 3 6.6 2.9 4.6 1.3 versicolor
## 4 6.7 3.1 4.4 1.4 versicolor
## 5 6.6 3 4.4 1.4 versicolor
## 6 6.8 2.8 4.8 1.4 versicolor
## 7 6.7 3 5 1.7 versicolor
## 8 6.7 3.1 4.7 1.5 versicolor
## # A tibble: 30 x 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 7 3.2 4.7 1.4 versicolor
## 2 6.9 3.1 4.9 1.5 versicolor
## 3 6.6 2.9 4.6 1.3 versicolor
## 4 6.7 3.1 4.4 1.4 versicolor
## 5 6.6 3 4.4 1.4 versicolor
## 6 6.8 2.8 4.8 1.4 versicolor
## 7 6.7 3 5 1.7 versicolor
## 8 6.7 3.1 4.7 1.5 versicolor
## 9 7.1 3 5.9 2.1 virginica
## 10 7.6 3 6.6 2.1 virginica
## # ... with 20 more rows
Atau bisa dengan cara alternatif menggunakan operator %in%:
## # A tibble: 30 x 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 7 3.2 4.7 1.4 versicolor
## 2 6.9 3.1 4.9 1.5 versicolor
## 3 6.6 2.9 4.6 1.3 versicolor
## 4 6.7 3.1 4.4 1.4 versicolor
## 5 6.6 3 4.4 1.4 versicolor
## 6 6.8 2.8 4.8 1.4 versicolor
## 7 6.7 3 5 1.7 versicolor
## 8 6.7 3.1 4.7 1.5 versicolor
## 9 7.1 3 5.9 2.1 virginica
## 10 7.6 3 6.6 2.1 virginica
## # ... with 20 more rows
Bagian ini akan menggunakan 3 fungsi - filter_all(), filter_if() dan filter_at() - untuk menyaring beberapa baris dengan kondisi dari baris itu sendiri.
Buat data frame baru dari variabel df dengan menghapus kolom “Species”:
## # A tibble: 3 x 4
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## <dbl> <dbl> <dbl> <dbl>
## 1 6.3 3.3 6 2.5
## 2 7.2 3.6 6.1 2.5
## 3 6.7 3.3 5.7 2.5
## # A tibble: 150 x 4
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## <dbl> <dbl> <dbl> <dbl>
## 1 5.1 3.5 1.4 0.2
## 2 4.9 3 1.4 0.2
## 3 4.7 3.2 1.3 0.2
## 4 4.6 3.1 1.5 0.2
## 5 5 3.6 1.4 0.2
## 6 5.4 3.9 1.7 0.4
## 7 4.6 3.4 1.4 0.3
## 8 5 3.4 1.5 0.2
## 9 4.4 2.9 1.4 0.2
## 10 4.9 3.1 1.5 0.1
## # ... with 140 more rows
Maksud perintah diatas (fungsi any_vars()) adalah mencari kolom dan baris yang nilainya lebih besar dari 2.4 namun tidak semua nilai dibuat TRUE alias diatas 2.4. Jika dengan fungsi all_vars() maka semua nilai sifatnya wajib diatas 2.4. Sedangkan any_vars(), sesuai namanya any artinya fungsi mencari nilai namun tidak semua hasilnya sesuai atau diatas 2.4.
Jika fungsi any_vars() dijalankan, fungsi ini mencari secara bertahap. Jika sudah ditemukan nilai yang diatas 2.4 maka selanjutnya dicari yang sedikit diatas 2.4, lalu yang sama dengan 2.4 lalu yang dibawah 2.4 dan seterusnya. Kalau dalam bahas inggrisnya, deskripsi kode diatas adalah “Select rows when any of the variables are greater than 2.4”.
Untuk mudah lebih dapat gambaran, lihat link ini di bagian nomor 9.2.1
Atau mungkin jika ada yang bisa menjelaskan lebih detil atau mungkin bisa memberikan referensi yang cocok, bisa ditulis di kolom komentar.
## # A tibble: 150 x 4
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## <dbl> <dbl> <dbl> <dbl>
## 1 5.1 3.5 1.4 0.2
## 2 4.9 3 1.4 0.2
## 3 4.7 3.2 1.3 0.2
## 4 4.6 3.1 1.5 0.2
## 5 5 3.6 1.4 0.2
## 6 5.4 3.9 1.7 0.4
## 7 4.6 3.4 1.4 0.3
## 8 5 3.4 1.5 0.2
## 9 4.4 2.9 1.4 0.2
## 10 4.9 3.1 1.5 0.1
## # ... with 140 more rows
Baris kode diatas menyaring kolom yang diawali “Sepal”. Kolom Petal.Length dan Petal.Width ikut ter-filter karena ada barisnya yang lebih kecil dari 2.4 dan lebih besar dari 2.4, ini karena digunakan fungsi any_vars().
Sebelum itu, kita buat sebuah data frame yang ada missing value-nya. Di bahasa R, NA (Not Available) digunakan untuk merepresentasikan nilai yang hilang. Berikut baris kode untuk membuat data frame-nya:
# Membuat data frame dengan missing values
data_orang <-
data_frame(
nama = c("Andre", "Bambang", "Chandra", "Donita"),
umur = c(27, 25, 29, 26),
tinggi = c(180, NA, NA, 169),
menikah = c("ya", "ya", "tidak", "tidak")
)
# Print
data_orang## # A tibble: 4 x 4
## nama umur tinggi menikah
## <chr> <dbl> <dbl> <chr>
## 1 Andre 27 180 ya
## 2 Bambang 25 NA ya
## 3 Chandra 29 NA tidak
## 4 Donita 26 169 tidak
## # A tibble: 2 x 4
## nama umur tinggi menikah
## <chr> <dbl> <dbl> <chr>
## 1 Bambang 25 NA ya
## 2 Chandra 29 NA tidak
## # A tibble: 2 x 4
## nama umur tinggi menikah
## <chr> <dbl> <dbl> <chr>
## 1 Andre 27 180 ya
## 2 Donita 26 169 tidak
Maksud !is.na() adalah cari data yang NA dan hilangkan.
Kita bisa ambil baris dan jumlahnya secara acak atau random. Menggunakan fungsi sample_n() atau mengambil fraksi/pecahan secara acak dengan fungsi sample_frac(). Tapi sebelum itu, harus dideklarasikan sebuah fungsi, yaitu fungsi set.seed() yang mana bertindak sebagai Random Generator Number (RGN) dan penyimpan nilai yang akan diambil secara acak.
## # A tibble: 5 x 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 5.2 3.5 1.5 0.2 setosa
## 2 5.7 2.6 3.5 1 versicolor
## 3 6.3 3.3 6 2.5 virginica
## 4 6.5 3.2 5.1 2 virginica
## 5 6.3 3.4 5.6 2.4 virginica
Penjelasan baris kode diatas yaitu:
## [1] 2 5 3
## [1] 5 3 5
Kode diatas memakai fungsi sample(), jika memakai fungsi sample_n() tidak akan jalan karena sample_n() butuh input-an data frame, bukan vector. Namun proses dan prinsipnya tetap sama.
## # A tibble: 8 x 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 5.2 3.5 1.5 0.2 setosa
## 2 5.7 2.6 3.5 1 versicolor
## 3 6.3 3.3 6 2.5 virginica
## 4 6.5 3.2 5.1 2 virginica
## 5 6.3 3.4 5.6 2.4 virginica
## 6 6.4 2.8 5.6 2.2 virginica
## 7 6.8 3.2 5.9 2.3 virginica
## 8 7.9 3.8 6.4 2 virginica
## # A tibble: 5 x 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 7.7 3.8 6.7 2.2 virginica
## 2 7.7 2.6 6.9 2.3 virginica
## 3 7.7 2.8 6.7 2 virginica
## 4 7.9 3.8 6.4 2 virginica
## 5 7.7 3 6.1 2.3 virginica
## # A tibble: 16 x 5
## # Groups: Species [3]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 5.8 4 1.2 0.2 setosa
## 2 5.7 4.4 1.5 0.4 setosa
## 3 5.7 3.8 1.7 0.3 setosa
## 4 5.5 4.2 1.4 0.2 setosa
## 5 5.5 3.5 1.3 0.2 setosa
## 6 7 3.2 4.7 1.4 versicolor
## 7 6.9 3.1 4.9 1.5 versicolor
## 8 6.7 3.1 4.4 1.4 versicolor
## 9 6.8 2.8 4.8 1.4 versicolor
## 10 6.7 3 5 1.7 versicolor
## 11 6.7 3.1 4.7 1.5 versicolor
## 12 7.7 3.8 6.7 2.2 virginica
## 13 7.7 2.6 6.9 2.3 virginica
## 14 7.7 2.8 6.7 2 virginica
## 15 7.9 3.8 6.4 2 virginica
## 16 7.7 3 6.1 2.3 virginica
Pada bahasan dan latihan bab Subset Baris Data Frame, kita sudah mempelajari cukup dalam tentang bagaimana filtering sebuah data frame menggunakan paket dplyr ataupun tidyverse. Adapun ringkasan yang kita pelajari bersama yaitu:
Pada bab ini akan dijelaskan bagaimana cara mengidentifikasi (identify) dan menghapus (remove) duplikasi data di bahasa R.
Kita bersama akan belajar menggunakan fungsi base dari R dan dari paket dplyr yang akan dipakai:
Tetap package dan dataset yang digunakan adalah tidyverse dan iris.
Fungsi duplicated() dari R akan memberikan output logika yaitu TRUE dengan bentuk vector bila ada yang duplikat.
Contoh, saya buat variable x yang berisi vector enam angka.
## [1] FALSE TRUE FALSE FALSE TRUE FALSE
## [1] 2 5
## [1] 2 5 4 7
## # A tibble: 23 x 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 4.4 2.9 1.4 0.2 setosa
## 9 5.4 3.7 1.5 0.2 setosa
## 10 5.8 4 1.2 0.2 setosa
## # ... with 13 more rows
Diberikan sebuah vector seperti dibawah:
Kita bisa ambil data yang unique; berbeda dan tidak berulang, dengan perintah:
## [1] 2 5 4 7
Fungsi unique() juga dapat diaplikasikan pada sebuah data frame seperti berikut:
## # A tibble: 149 x 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
## # ... with 139 more rows
Fungsi distinct() bisa digunakan untuk menyimpan hanya data yang unik atau tidak berulang dari sebuah data frame. Jika ada duplikasi baris, hanya baris pertama yang disimpan. Ini versi yang lebih efisien dari fungsi unique().
## # A tibble: 149 x 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
## # ... with 139 more rows
## # A tibble: 35 x 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.4 2.9 1.4 0.2 setosa
## 8 4.8 3.4 1.6 0.2 setosa
## 9 4.3 3 1.1 0.1 setosa
## 10 5.8 4 1.2 0.2 setosa
## # ... with 25 more rows
Argumen .keep_all bila dibuat TRUE maka semua kolom tetap disimpan. Bila dibuat FALSE maka hanya kolom yang diklarasikan yang disimpan.
## # A tibble: 110 x 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 4.4 2.9 1.4 0.2 setosa
## 9 4.9 3.1 1.5 0.1 setosa
## 10 5.4 3.7 1.5 0.2 setosa
## # ... with 100 more rows
Apa perbedaan unique() dengan distinct()?
unique() merupakan fungsi dari base R. Untuk jumlah data frame yang besar prosesnya kemungkinan akan lebih lambat.
distinct() merupakan fungsi di dalam paket dplyr, dan bisa di-custom fungsinya. Fungsi ini secara konsiderasi memang lebih cepat prosesnya.
Coba lihat dua perbandingan kedua perintah dibawah antara unique() dan distinct(). Keduanya sama-sama mengambil kolom Petal.Width dan Species.
## Petal.Width Species
## 1 0.2 setosa
## 6 0.4 setosa
## 7 0.3 setosa
## 10 0.1 setosa
## 24 0.5 setosa
## 44 0.6 setosa
## 51 1.4 versicolor
## 52 1.5 versicolor
## 54 1.3 versicolor
## 57 1.6 versicolor
## 58 1.0 versicolor
## 70 1.1 versicolor
## 71 1.8 versicolor
## 74 1.2 versicolor
## 78 1.7 versicolor
## 101 2.5 virginica
## 102 1.9 virginica
## 103 2.1 virginica
## 104 1.8 virginica
## 105 2.2 virginica
## 107 1.7 virginica
## 111 2.0 virginica
## 115 2.4 virginica
## 116 2.3 virginica
## 120 1.5 virginica
## 130 1.6 virginica
## 135 1.4 virginica
## Petal.Width Species
## 1 0.2 setosa
## 2 0.4 setosa
## 3 0.3 setosa
## 4 0.1 setosa
## 5 0.5 setosa
## 6 0.6 setosa
## 7 1.4 versicolor
## 8 1.5 versicolor
## 9 1.3 versicolor
## 10 1.6 versicolor
## 11 1.0 versicolor
## 12 1.1 versicolor
## 13 1.8 versicolor
## 14 1.2 versicolor
## 15 1.7 versicolor
## 16 2.5 virginica
## 17 1.9 virginica
## 18 2.1 virginica
## 19 1.8 virginica
## 20 2.2 virginica
## 21 1.7 virginica
## 22 2.0 virginica
## 23 2.4 virginica
## 24 2.3 virginica
## 25 1.5 virginica
## 26 1.6 virginica
## 27 1.4 virginica
Perbedaannya yaitu fungsi unique() memberikan label berupa nomor indeks dimana data unik pertama yang disimpan, sedangkan fungsi distinct() memberikan label indeks normal.
Pada bab ini, kita mempelajari fungsi-fungsi inti dalam mengidentifikasi dan menghapus data yang duplikat. Adapun ringkasan yang dipelajar yaitu:
Bab ini menjelaskan tentang bagaimana mengurutkan ulang/reorder atau sort baris, di sebuah tabel untuk satu atau lebih kolom.
Maksud mengurutkan ulang baris disini adalah dimana sebuah dataset (contoh: iris) sudah berurutan dengan sesuai kondisi dari sananya, atau barisnya sudah disusun sedimikian rupa sesuai dari penyedia dan pembuat dataset itu. Maka menyusun ulang disini mengurutkan kembali dataset tersebut sesuai dengan kondisi dan susunan yang kita inginkan. Hence namanya reorder.
Disini kita akan belajar bagaimana mudahnya untuk:
## # A tibble: 150 x 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
## # ... with 140 more rows
Secara default, fungsi arrange() mengurutan dengan nilai kecil ke besar alias ascending.
## # A tibble: 150 x 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
## # ... with 140 more rows
Ada juga cara lain untuk menyusun. Kita bisa gunakan tanda minus (-) untuk menyusun baris secara descending. Seperti berikut:
## # A tibble: 150 x 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
## # ... with 140 more rows
## # A tibble: 150 x 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.2 1.4 0.2 setosa
## 8 4.6 3.4 1.4 0.3 setosa
## 9 4.6 3.6 1 0.2 setosa
## 10 4.7 3.2 1.3 0.2 setosa
## # ... with 140 more rows
Catata: Jika ada data yang hilang atau kosong (missing values) posisinya selalu di akhir baris.
Di bab ini kita belajar bagaimana mengurutkan baris data frame menggunakan fungsi arrange() dari paket dplyr.
Bagian bab ini, kita akan belajar bagaimana mengubah (rename) nama kolom pada sebuah data frame di bahasa R. Hal ini bisa mudah dilakukan dengan fungsi rename() dari paket dplyr. Bisa juga dilakukan dengan fungsi base dari R, namun butup perintah yang lebih panjang.
Mengubah nama kolom Sepal.Length menjadi sepal_length dan Sepal.Width menjadi sepal_width:
## # A tibble: 150 x 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
## # ... with 140 more rows
Catata: perintah dengan dplyr::rename() berarti memanggil fungsi rename() tanpa harus load paket dplyr ke dalam RStudio, namun paket tetap harus di-install terlebih dahulu. Cara ini biasa digunakan untuk sekali jalan atau one-time use jika ingin melakukan operasi yang instan.
Untuk mengubah nama kolom Sepal.Length menjadi sepal_length, prosedurnya adalah sebagai berikut:
## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
names(df)[names(df) == "Sepal.Length"] <- "sepal_length"
names(df)[names(df) == "Sepal.Width"] <- "sepal_width"
df## # A tibble: 150 x 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
## # ... with 140 more rows
Atau, bisa juga dengan cara lebih mudah dibaca, dimana mengubah nama kolom dengan index-nya. Seperti berikut:
Di bab ini, kita sudah mempelajari bagaiman mengubah nama satu atau lebih kolom di sebuah data frame menggunakan fungsi rename() dari paket dplyr dan juga dengan fungsi dari base R.
Pada bab sebelum ini, dijelaskan untuk perubahan nama kolom dengan fungsi dari paket dplyr. Bab ini akan dijelaskan bagaimana kita bisa mengubah baris atau isi baris, seperti tambarh baris, hapus baris, dan ubah nilai baris. Istilahnya kita alter baris tersebut bila mana ada merasa data ada yang kurang sesuai dan perlu dirubah.
Kasus pertama, misal, ubah data pada kolom Species di dataset iris agar data setosa menjadi Setosa (huruf S kapital). Perintahnya:
# Menggunakan mutate
df %>% mutate(ifelse(test = Species == "setosa", yes = "Setosa", no = Species))## # A tibble: 150 x 6
## sepal_length sepal_width Petal.Length Petal.Width Species `ifelse(test = Spe~
## <dbl> <dbl> <dbl> <dbl> <fct> <chr>
## 1 5.1 3.5 1.4 0.2 setosa Setosa
## 2 4.9 3 1.4 0.2 setosa Setosa
## 3 4.7 3.2 1.3 0.2 setosa Setosa
## 4 4.6 3.1 1.5 0.2 setosa Setosa
## 5 5 3.6 1.4 0.2 setosa Setosa
## 6 5.4 3.9 1.7 0.4 setosa Setosa
## 7 4.6 3.4 1.4 0.3 setosa Setosa
## 8 5 3.4 1.5 0.2 setosa Setosa
## 9 4.4 2.9 1.4 0.2 setosa Setosa
## 10 4.9 3.1 1.5 0.1 setosa Setosa
## # ... with 140 more rows
# Menggunakan transmute
df %>% transmute(ifelse(test = Species == "setosa", yes = "Setosa", no = Species))## # A tibble: 150 x 1
## `ifelse(test = Species == "setosa", yes = "Setosa", no = Species)`
## <chr>
## 1 Setosa
## 2 Setosa
## 3 Setosa
## 4 Setosa
## 5 Setosa
## 6 Setosa
## 7 Setosa
## 8 Setosa
## 9 Setosa
## 10 Setosa
## # ... with 140 more rows
Kasus kedua, kita buat tibble baru dengan data seperti dibawah.
datakau <- tibble(nim = c(1021, 1022, 1023, 1024, 1025),
nama = c("Asaf", "Diani", "Ulfa", "Harris", "Hanif"),
jk = c("laki2", "perempuan", "perempuan", "laki2", "laki-laki"))
datakau## # A tibble: 5 x 3
## nim nama jk
## <dbl> <chr> <chr>
## 1 1021 Asaf laki2
## 2 1022 Diani perempuan
## 3 1023 Ulfa perempuan
## 4 1024 Harris laki2
## 5 1025 Hanif laki-laki
## # A tibble: 5 x 3
## nim nama jk
## <dbl> <chr> <chr>
## 1 1021 Asaf laki2
## 2 1022 Diani perempuan
## 3 1023 Ulfa perempuan
## 4 1204 Harris laki2
## 5 1025 Hanif laki-laki
## # A tibble: 5 x 3
## nim nama jk
## <dbl> <chr> <chr>
## 1 1021 Asaf laki-laki
## 2 1022 Diani perempuan
## 3 1023 Ulfa perempuan
## 4 1204 Harris laki-laki
## 5 1025 Hanif laki-laki
# Menggunakan fungsi dplyr
datakau <- add_row(datakau, nim = 1026, nama = "Alif", jk = "laki-laki")
datakau## # A tibble: 6 x 3
## nim nama jk
## <dbl> <chr> <chr>
## 1 1021 Asaf laki-laki
## 2 1022 Diani perempuan
## 3 1023 Ulfa perempuan
## 4 1204 Harris laki-laki
## 5 1025 Hanif laki-laki
## 6 1026 Alif laki-laki
## # A tibble: 6 x 4
## nim nama jk alamat
## <dbl> <chr> <chr> <chr>
## 1 1021 Asaf laki-laki Cirebon
## 2 1022 Diani perempuan Jakarta
## 3 1023 Ulfa perempuan Yogyakarta
## 4 1204 Harris laki-laki Jakarta
## 5 1025 Hanif laki-laki Bali
## 6 1026 Alif laki-laki Bali
## # A tibble: 5 x 4
## nim nama jk alamat
## <dbl> <chr> <chr> <chr>
## 1 1021 Asaf laki-laki Cirebon
## 2 1022 Diani perempuan Jakarta
## 3 1023 Ulfa perempuan Yogyakarta
## 4 1204 Harris laki-laki Jakarta
## 5 1026 Alif laki-laki Bali
Kesimpulan tidak saya tulis. Anda bisa coba menyimpulkan apa yang telah dipelajar bersama pada bab ini. Terima kasih.
Bab ini menjelaskan bagaimana melakukan komputasi (istilahnya perhitungan) dan menambahkan variabel atau kolom baru pada sebuah data frame. Di bab sebelumnya sudah ada satu contoh penambahan kolom tapi di bab ini yang akan difokuskan lebih jauh.
Adapun fungsi-fungsi yang digunakan untuk melakukan hal yang disebutkan diatas adalah:
Akan ada juga digunakan kombinasi beberapa fungsi untuk mutate() dan transmute(), seperti:
Menambahkan kolom baru (sepal_bagi_petal_l) tanpa menghapus kolom yang serupa:
## # A tibble: 150 x 6
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species sepal_bagi_petal_l
## <dbl> <dbl> <dbl> <dbl> <fct> <dbl>
## 1 5.1 3.5 1.4 0.2 setosa 3.64
## 2 4.9 3 1.4 0.2 setosa 3.5
## 3 4.7 3.2 1.3 0.2 setosa 3.62
## 4 4.6 3.1 1.5 0.2 setosa 3.07
## 5 5 3.6 1.4 0.2 setosa 3.57
## 6 5.4 3.9 1.7 0.4 setosa 3.18
## 7 4.6 3.4 1.4 0.3 setosa 3.29
## 8 5 3.4 1.5 0.2 setosa 3.33
## 9 4.4 2.9 1.4 0.2 setosa 3.14
## 10 4.9 3.1 1.5 0.1 setosa 3.27
## # ... with 140 more rows
Menambahkan kolom baru (sepal_bagi_petal_l, sepal_bagi_petal_w) dan hapus kolom yang serupa:
df %>%
transmute(
sepal_bagi_petal_l = Sepal.Length/Petal.Length,
sepal_bagi_petal_w = Sepal.Width/Petal.Width
)## # A tibble: 150 x 2
## sepal_bagi_petal_l sepal_bagi_petal_w
## <dbl> <dbl>
## 1 3.64 17.5
## 2 3.5 15
## 3 3.62 16
## 4 3.07 15.5
## 5 3.57 18
## 6 3.18 9.75
## 7 3.29 11.3
## 8 3.33 17
## 9 3.14 14.5
## 10 3.27 31
## # ... with 140 more rows
Kita awali dengan membuat variabel baru yaitu df2, yang hanya berisi kolom bertipe numeric. Untuk melakukannya, kita hilangkan kolom Species dengan perintah berikut:
Fungsi-fungsi seperti mutate_all()/transmute_all(), mutate_at()/transmute_at(), dan mutate_if()/transmute_if() dapat digunakan untuk mengubah beberapa kolom sekaligus.
Formatnya simpel seperti berikut:
# Varian fungsi mutate
mutate_all(.tbl, .funs, ...)
mutate_if(.tbl, .predicate, .funs, ...)
mutate_at(.tbl, .vars, .funs, ...)
# Varian fungsi transmute
transmute_all(.tbl, .funs, ...)
transmute_if(.tbl, .predicate, .funs, ...)
transmute_at(.tbl, .vars, .funs, ...)Dimana:
Setelah ini langsung kita coba latihan bagaimana implementasi varian fungsi dari mutate(). Untuk varian dari transmute() bisa ditulis dengan format yang sama.
## # A tibble: 150 x 4
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## <dbl> <dbl> <dbl> <dbl>
## 1 2.01 1.38 0.551 0.0787
## 2 1.93 1.18 0.551 0.0787
## 3 1.85 1.26 0.512 0.0787
## 4 1.81 1.22 0.591 0.0787
## 5 1.97 1.42 0.551 0.0787
## 6 2.13 1.54 0.669 0.157
## 7 1.81 1.34 0.551 0.118
## 8 1.97 1.34 0.591 0.0787
## 9 1.73 1.14 0.551 0.0787
## 10 1.93 1.22 0.591 0.0394
## # ... with 140 more rows
Catatan: tanda titik (. ) mewakili semua kolom/variables.
## # A tibble: 150 x 8
## Sepal.Length Sepal.Width Petal.Length Petal.Width Sepal.Length_cm
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 5.1 3.5 1.4 0.2 2.01
## 2 4.9 3 1.4 0.2 1.93
## 3 4.7 3.2 1.3 0.2 1.85
## 4 4.6 3.1 1.5 0.2 1.81
## 5 5 3.6 1.4 0.2 1.97
## 6 5.4 3.9 1.7 0.4 2.13
## 7 4.6 3.4 1.4 0.3 1.81
## 8 5 3.4 1.5 0.2 1.97
## 9 4.4 2.9 1.4 0.2 1.73
## 10 4.9 3.1 1.5 0.1 1.93
## # ... with 140 more rows, and 3 more variables: Sepal.Width_cm <dbl>,
## # Petal.Length_cm <dbl>, Petal.Width_cm <dbl>
Total kolom menjadi 8 karena bila diberi nama, pada kasus ditas yaitu cm, maka otomatis .funs membuat kolom baru dan memasukkan kata “cm” di akhir setiap nama kolom sebagai pembeda.
## # A tibble: 150 x 7
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Length_cm
## <dbl> <dbl> <dbl> <dbl> <fct> <dbl>
## 1 5.1 3.5 1.4 0.2 setosa 2.01
## 2 4.9 3 1.4 0.2 setosa 1.93
## 3 4.7 3.2 1.3 0.2 setosa 1.85
## 4 4.6 3.1 1.5 0.2 setosa 1.81
## 5 5 3.6 1.4 0.2 setosa 1.97
## 6 5.4 3.9 1.7 0.4 setosa 2.13
## 7 4.6 3.4 1.4 0.3 setosa 1.81
## 8 5 3.4 1.5 0.2 setosa 1.97
## 9 4.4 2.9 1.4 0.2 setosa 1.73
## 10 4.9 3.1 1.5 0.1 setosa 1.93
## # ... with 140 more rows, and 1 more variable: Petal.Width_cm <dbl>
mutate_if() juga sangat berguna untuk mengubah tipe suatu kolom.
## # A tibble: 150 x 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <chr>
## 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
## # ... with 140 more rows
Membulatkan semua nilai pada kolom bertipe numeric:
## # A tibble: 150 x 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 5 4 1 0 setosa
## 2 5 3 1 0 setosa
## 3 5 3 1 0 setosa
## 4 5 3 2 0 setosa
## 5 5 4 1 0 setosa
## 6 5 4 2 0 setosa
## 7 5 3 1 0 setosa
## 8 5 3 2 0 setosa
## 9 4 3 1 0 setosa
## 10 5 3 2 0 setosa
## # ... with 140 more rows
Untuk informasi lebih banyak apa saja argumen bisa ditambah dalam varian fungsi dari mutate() bisa cek di sini dan sini.
Di bab ini menjelaskan bagaimana menambahkan kolom baru ke data frame menggunakan fungsi dari paket dplyr, yaitu: mutate(), transmute(), dan variannya.
Atau lebih kerennya pakai bahasa inggirs; compute summary statistics.
Di bab ini akan meperkenalkan cara bagaimana compute atau melakukan komputasi perhitungan statistical summary atau sebuah ringkasan statistik di bahasa pemrograman R dengan paket dplyr.
Kita akan belajar, bagaimana:
df %>%
group_by(Species) %>%
summarise(count = n(),
mean_sep = mean(Sepal.Length),
mean_pet = mean(Petal.Length)
)## # A tibble: 3 x 4
## Species count mean_sep mean_pet
## * <fct> <int> <dbl> <dbl>
## 1 setosa 50 5.01 1.46
## 2 versicolor 50 5.94 4.26
## 3 virginica 50 6.59 5.55
Dimana:
Untuk yang bagian ini, kita pakai dataset ToothGrowth.
## len supp dose
## 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.0 VC 0.5
# Komputasi summarize
ToothGrowth %>%
group_by(supp, dose) %>%
summarise(n = n(),
mean = mean(len),
sd = sd(len)
)## # A tibble: 6 x 5
## # Groups: supp [2]
## supp dose n mean sd
## <fct> <dbl> <int> <dbl> <dbl>
## 1 OJ 0.5 10 13.2 4.46
## 2 OJ 1 10 22.7 3.91
## 3 OJ 2 10 26.1 2.66
## 4 VC 0.5 10 7.98 2.75
## 5 VC 1 10 16.8 2.52
## 6 VC 2 10 26.1 4.80
Dimana:
## # A tibble: 3 x 5
## Species Sepal.Length Sepal.Width Petal.Length Petal.Width
## * <fct> <dbl> <dbl> <dbl> <dbl>
## 1 setosa 5.01 3.43 1.46 0.246
## 2 versicolor 5.94 2.77 4.26 1.33
## 3 virginica 6.59 2.97 5.55 2.03
## # A tibble: 3 x 3
## Species Sepal.Length Sepal.Width
## * <fct> <dbl> <dbl>
## 1 setosa 5.01 3.43
## 2 versicolor 5.94 2.77
## 3 virginica 6.59 2.97
## # A tibble: 3 x 5
## Species Sepal.Length Sepal.Width Petal.Length Petal.Width
## * <fct> <dbl> <dbl> <dbl> <dbl>
## 1 setosa 5.01 3.43 1.46 0.246
## 2 versicolor 5.94 2.77 4.26 1.33
## 3 virginica 6.59 2.97 5.55 2.03
Subbab ini memberikan beberapa fungsi R untuk melakukan komputasi statistik. Seperti pada baris-baris kode sebelumnya, kita bisa berlatih mencoba menggunakan fungsi-fungsi ini untuk spesifik mencari hasil diinginkan.
Mengukur rata-rata:
Mengukur variasi:
Mengukur nilai:
Mengukur posisi:
Jumlah:
Jumlah dengan nilai logika:
Menggunakan fungsi summarise() dan group_by() untuk komputasi atau perhitungan statistik.
Berikut beberapa referensi untuk belajar bahasa pemrograman R dan manipulasi data:
Anda juga dapat silaturahmi ke channel YouTube saya, yang membahas seputar ilmu di dunia IT terutama yang saya minati. Termasuk tentang data. Channel-nya adalah Dhuki ID.
Sekian dan terima kasih.