Tutorial dplyr: tulisan ini memuat 43 metode atau fungsi dari package dplyr untuk proses data manipulation di R. Lanjut baca jika ini yang kamu butuhkan.
Data manipulation atau manipulasi data merupakan bagian penting dalam tahapan analisis data.
Manipulasi data dapat diartikan sebagai proses mengubah data agar lebih mudah dibaca atau lebih teratur.
Terdapat banyak cara untuk melakukan manipulasi data.
Saya biasanya menggunakan package dplyr
dan beberapa package lainnya seperty tidyr
dan stringr
.
Gunakan daftar isi di bawah ini untuk mempermudah pencarian fungsi yang dibutuhkan.
Apa itu dplyr?
- Salah satu package yang paling populer dan powerful
- Ditulis oleh salah satu programmer R populer: Hadley Wickham (ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, and forcats~ tidyverse)
- Dapat melakukan hampir semua operasi data manipulation
- Mudah dipelajari, digunakan, dan diingat
Mengapa dplyr?
Berikut ini beberapa alasan mengapa kita menggunakan dplyr
:
- Cepat. Pemrosesan yang lebih cepat.
- Kode yang lebih “bersih”. “Chaining” fungsi-fungsi sehingga lebih rapi dan sistematis.
- Kode yang lebih “simpel”. Kode lebih mudah dimengerti dan diikuti.
Operasi pipe
Operasi “pipe” merupakan alat yang ampuh untuk mengekspresikan urutan beberapa operasi dengan jelas. Pipa, %>%
, berasal dari paket magrittr
oleh Stefan Milton Bache.
Paket dalam tidyverse
(termasuk dplyr) memuat %>%
untuk kita secara otomatis, jadi kita tidak perlu memuat magrittr
secara eksplisit.
Fungsi utama “pipe” adalah membantu kita menulis kode dengan cara yang lebih mudah dibaca dan dipahami.
Dengan menggunakan “pipe”, kita juga dapat “merangkai” kode agar efektif dan bersih.
Lihat gambar di bawah ini:
Petunjuk: baca %>% sebagai “lalu”.
Apa yang akan kita pelajari hari ini?
• select()
: memilih kolom
• arrange()
: mengurutkan data (baris)
• filter()
: memilih data (baris) sesuai kriteria
• mutate()
: membuat variabel atau kolom baru
• summarise()
: merangkum data menjadi data baru
Namun, untuk manipulasi data yang komprehensif, kita akan menggunakan fungsi dari paket dplyr bersama dengan paket lain
seperti stringr dan tidyr.
Install and load dplyr
Kita dapat menginstal dan memuat paket dplyr
atau tidyverse
sehingga Kita juga menginstal paket lain yang diperlukan untuk tutorial ini.
tidyverse
merupakan kumpulan package yang sangat populer di kalangan pengguna R, yang berisi package:
• ggplot2
• dplyr
• tidyr
• readr
• purr
• stringr
• forcats
Kode:
#instal package
install.packages("tidyverse")
# load library
library(tidyverse)
Data penguin
Dataset palmer penguins hadir sebagai pengganti langsung untuk data IRIS yang telah terlalu banyak digunakan. Dataset terdiri dari atribut tiga spesies penguin – Adélie, Gentoo, dan Chinstrap.
Load data penguin
Kode:
install.packages("palmerpenguins")
library(palmerpenguins)
data(package = 'palmerpenguins')
Data dikumpulkan dan disediakan oleh Dr. Kristen Gorman dan Palmer Station, Antartika LTER, anggota Long Term Ecological Research.
Package palmerpenguins
berisi dua set data.
Pertama disebut penguins
, dan merupakan versi data mentah yang disederhanakan.
Kode:
glimpse(penguins)
Output:
## Rows: 344
## Columns: 8
## $ species <fct> Adelie, Adelie, Adelie, Adelie, Adelie, Adelie, Adelie, Adelie, Adelie, Adelie, Adelie, Adelie, Adelie, A...
## $ island <fct> Torgersen, Torgersen, Torgersen, Torgersen, Torgersen, Torgersen, Torgersen, Torgersen, Torgersen, Torger...
## $ bill_length_mm <dbl> 39.1, 39.5, 40.3, NA, 36.7, 39.3, 38.9, 39.2, 34.1, 42.0, 37.8, 37.8, 41.1, 38.6, 34.6, 36.6, 38.7, 42.5,...
## $ bill_depth_mm <dbl> 18.7, 17.4, 18.0, NA, 19.3, 20.6, 17.8, 19.6, 18.1, 20.2, 17.1, 17.3, 17.6, 21.2, 21.1, 17.8, 19.0, 20.7,...
## $ flipper_length_mm <int> 181, 186, 195, NA, 193, 190, 181, 195, 193, 190, 186, 180, 182, 191, 198, 185, 195, 197, 184, 194, 174, 1...
## $ body_mass_g <int> 3750, 3800, 3250, NA, 3450, 3650, 3625, 4675, 3475, 4250, 3300, 3700, 3200, 3800, 4400, 3700, 3450, 4500,...
## $ sex <fct> male, female, female, NA, female, male, female, male, NA, NA, NA, NA, female, male, male, female, female,...
## $ year <int> 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 200...
Dataset kedua adalah penguins_raw
, dan berisi semua variabel dan nama asli yang diunduh.
Kode:
glimpse(penguins_raw)
Output:
## Rows: 344 ## Columns: 17 ## $ studyName <chr> "PAL0708", "PAL0708", "PAL0708", "PAL0708", "PAL0708", "PAL0708", "PAL0708", "PAL0708", "PAL0708", "P... ## $ `Sample Number` <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28... ## $ Species <chr> "Adelie Penguin (Pygoscelis adeliae)", "Adelie Penguin (Pygoscelis adeliae)", "Adelie Penguin (Pygosc... ## $ Region <chr> "Anvers", "Anvers", "Anvers", "Anvers", "Anvers", "Anvers", "Anvers", "Anvers", "Anvers", "Anvers", "... ## $ Island <chr> "Torgersen", "Torgersen", "Torgersen", "Torgersen", "Torgersen", "Torgersen", "Torgersen", "Torgersen... ## $ Stage <chr> "Adult, 1 Egg Stage", "Adult, 1 Egg Stage", "Adult, 1 Egg Stage", "Adult, 1 Egg Stage", "Adult, 1 Egg... ## $ `Individual ID` <chr> "N1A1", "N1A2", "N2A1", "N2A2", "N3A1", "N3A2", "N4A1", "N4A2", "N5A1", "N5A2", "N6A1", "N6A2", "N7A1... ## $ `Clutch Completion` <chr> "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "No", "No", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes"... ## $ `Date Egg` <date> 2007-11-11, 2007-11-11, 2007-11-16, 2007-11-16, 2007-11-16, 2007-11-16, 2007-11-15, 2007-11-15, 2007... ## $ `Culmen Length (mm)` <dbl> 39.1, 39.5, 40.3, NA, 36.7, 39.3, 38.9, 39.2, 34.1, 42.0, 37.8, 37.8, 41.1, 38.6, 34.6, 36.6, 38.7, 4... ## $ `Culmen Depth (mm)` <dbl> 18.7, 17.4, 18.0, NA, 19.3, 20.6, 17.8, 19.6, 18.1, 20.2, 17.1, 17.3, 17.6, 21.2, 21.1, 17.8, 19.0, 2... ## $ `Flipper Length (mm)` <dbl> 181, 186, 195, NA, 193, 190, 181, 195, 193, 190, 186, 180, 182, 191, 198, 185, 195, 197, 184, 194, 17... ## $ `Body Mass (g)` <dbl> 3750, 3800, 3250, NA, 3450, 3650, 3625, 4675, 3475, 4250, 3300, 3700, 3200, 3800, 4400, 3700, 3450, 4... ## $ Sex <chr> "MALE", "FEMALE", "FEMALE", NA, "FEMALE", "MALE", "FEMALE", "MALE", NA, NA, NA, NA, "FEMALE", "MALE",... ## $ `Delta 15 N (o/oo)` <dbl> NA, 8.94956, 8.36821, NA, 8.76651, 8.66496, 9.18718, 9.46060, NA, 9.13362, 8.63243, NA, NA, NA, 8.555... ## $ `Delta 13 C (o/oo)` <dbl> NA, -24.69454, -25.33302, NA, -25.32426, -25.29805, -25.21799, -24.89958, NA, -25.09368, -25.21315, N... ## $ Comments <chr> "Not enough blood for isotopes.", NA, NA, "Adult not sampled.", NA, NA, "Nest never observed with ful...
Memahami data
Dataset terdiri dari atribut tiga spesies penguin – Adélie, Gentoo, dan Chinstrap. Lihat gambar di bawah ini untuk memahami data dengan lebih baik.
Setelah memahami datanya, mari kita mulai latihannya!
Bagian 1: Memilih kolom
1. Memilih dan drop kolom berdasarkan nama
Untuk memilih atau drop satu atau beberapa kolom, cukup tambahkan namanya di pernyataan Select
. Urutan yang kita tambahkan akan menentukan urutan kemunculannya di keluaran.
Memilih kolom:
Kode:
select(penguins, species, island)
Output:
## # A tibble: 344 x 2 ## species island ## <fct> <fct> ## 1 Adelie Torgersen ## 2 Adelie Torgersen ## 3 Adelie Torgersen ## 4 Adelie Torgersen ## 5 Adelie Torgersen ## 6 Adelie Torgersen ## 7 Adelie Torgersen ## 8 Adelie Torgersen ## 9 Adelie Torgersen ## 10 Adelie Torgersen ## # ... with 334 more rows
Jika kita ingin memilih banyak kolom,kita dapat menghemat waktu dengan menggunakan potongan
atau chunk.
Pertama, kita harus melihat data dan memeriksa apakah kita dapat memilih kolom menggunakan potongan
chunk.
Untuk menambahkan potongan kolom, gunakan sintaks kolom awal: kolom akhir
:
Kode:
select(penguins, species, body_mass_g:year)
Output:
## # A tibble: 344 x 4 ## species body_mass_g sex year ## <fct> <int> <fct> <int> ## 1 Adelie 3750 male 2007 ## 2 Adelie 3800 female 2007 ## 3 Adelie 3250 female 2007 ## 4 Adelie NA <NA> 2007 ## 5 Adelie 3450 female 2007 ## 6 Adelie 3650 male 2007 ## 7 Adelie 3625 female 2007 ## 8 Adelie 4675 male 2007 ## 9 Adelie 3475 <NA> 2007 ## 10 Adelie 4250 <NA> 2007 ## # ... with 334 more rows
Drop kolom:
Tanda minus sebelum nama kolom memberitahu R untuk membuang kolom.
Kode:
select(penguins, -island, -year)
Output:
## # A tibble: 344 x 6 ## species bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex ## <fct> <dbl> <dbl> <int> <int> <fct> ## 1 Adelie 39.1 18.7 181 3750 male ## 2 Adelie 39.5 17.4 186 3800 female ## 3 Adelie 40.3 18 195 3250 female ## 4 Adelie NA NA NA NA <NA> ## 5 Adelie 36.7 19.3 193 3450 female ## 6 Adelie 39.3 20.6 190 3650 male ## 7 Adelie 38.9 17.8 181 3625 female ## 8 Adelie 39.2 19.6 195 4675 male ## 9 Adelie 34.1 18.1 193 3475 <NA> ## 10 Adelie 42 20.2 190 4250 <NA> ## # ... with 334 more rows
Kita juga dapat menggunakan kode ini:
Kode:
select(penguins, -c(sex, year))
Output:
## # A tibble: 344 x 6 ## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g ## <fct> <fct> <dbl> <dbl> <int> <int> ## 1 Adelie Torgersen 39.1 18.7 181 3750 ## 2 Adelie Torgersen 39.5 17.4 186 3800 ## 3 Adelie Torgersen 40.3 18 195 3250 ## 4 Adelie Torgersen NA NA NA NA ## 5 Adelie Torgersen 36.7 19.3 193 3450 ## 6 Adelie Torgersen 39.3 20.6 190 3650 ## 7 Adelie Torgersen 38.9 17.8 181 3625 ## 8 Adelie Torgersen 39.2 19.6 195 4675 ## 9 Adelie Torgersen 34.1 18.1 193 3475 ## 10 Adelie Torgersen 42 20.2 190 4250 ## # ... with 334 more rows
Dan dengan logika yang sama, kita bisa gunakan chunk
,
Kode:
select(penguins,-c(sex:year))
Output:
## # A tibble: 344 x 6 ## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g ## <fct> <fct> <dbl> <dbl> <int> <int> ## 1 Adelie Torgersen 39.1 18.7 181 3750 ## 2 Adelie Torgersen 39.5 17.4 186 3800 ## 3 Adelie Torgersen 40.3 18 195 3250 ## 4 Adelie Torgersen NA NA NA NA ## 5 Adelie Torgersen 36.7 19.3 193 3450 ## 6 Adelie Torgersen 39.3 20.6 190 3650 ## 7 Adelie Torgersen 38.9 17.8 181 3625 ## 8 Adelie Torgersen 39.2 19.6 195 4675 ## 9 Adelie Torgersen 34.1 18.1 193 3475 ## 10 Adelie Torgersen 42 20.2 190 4250 ## # ... with 334 more rows
Operasi pipe
Sekarang, mari kita gunakan operasi pipe
(%<%).
• Pipe
adalah alat yang ampuh untuk secara jelas mengekspresikan urutan dari beberapa operasi.
• Pipe
, %>%
, berasal dari paket magrittr
oleh Stefan Milton Bache.
• Paket dalam tidyverse
(termasuk dplyr) memuat %>%
untuk kita secara otomatis, jadi kita biasanya tidak memuatmagrittr
secara eksplisit.
• Pintasan untuk tanda %>%
adalah CTRL
+SHIFT
+ M
Berikut contoh penggunaannya:
Kode:
penguins %>%
select(island, year)
Output:
## # A tibble: 344 x 2 ## island year ## <fct> <int> ## 1 Torgersen 2007 ## 2 Torgersen 2007 ## 3 Torgersen 2007 ## 4 Torgersen 2007 ## 5 Torgersen 2007 ## 6 Torgersen 2007 ## 7 Torgersen 2007 ## 8 Torgersen 2007 ## 9 Torgersen 2007 ## 10 Torgersen 2007 ## # ... with 334 more rows
Mulai poin ini dan seterusnya, kita akan gunakan “pipe way”.
2. Memilih dan tidak memilih berdasarkan nomor kolom
Cara lain untuk memilih atau drop kolom adalah menggunakan nomor kolom. Untuk memeriksa nomor kolom, kita dapat menggunakan fungsi names
.
Kode:
names(penguins)
Output:
## [1] "species" "island" "bill_length_mm" "bill_depth_mm" "flipper_length_mm" "body_mass_g" ## [7] "sex" "year"
Memilih kolom berdasarkan nomor kolom:
Kode:
penguins %>%
select(1, 2)
Output:
## # A tibble: 344 x 2 ## species island ## <fct> <fct> ## 1 Adelie Torgersen ## 2 Adelie Torgersen ## 3 Adelie Torgersen ## 4 Adelie Torgersen ## 5 Adelie Torgersen ## 6 Adelie Torgersen ## 7 Adelie Torgersen ## 8 Adelie Torgersen ## 9 Adelie Torgersen ## 10 Adelie Torgersen ## # ... with 334 more rows
Kode:
penguins %>%
select(7:8)
Output:
## # A tibble: 344 x 2 ## sex year ## <fct> <int> ## 1 male 2007 ## 2 female 2007 ## 3 female 2007 ## 4 <NA> 2007 ## 5 female 2007 ## 6 male 2007 ## 7 female 2007 ## 8 male 2007 ## 9 <NA> 2007 ## 10 <NA> 2007 ## # ... with 334 more rows
Drop kolom berdassrkan nomor kolom:
Kode:
penguins %>%
select(-1, -2)
Output:
## # A tibble: 344 x 6 ## bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex year ## <dbl> <dbl> <int> <int> <fct> <int> ## 1 39.1 18.7 181 3750 male 2007 ## 2 39.5 17.4 186 3800 female 2007 ## 3 40.3 18 195 3250 female 2007 ## 4 NA NA NA NA <NA> 2007 ## 5 36.7 19.3 193 3450 female 2007 ## 6 39.3 20.6 190 3650 male 2007 ## 7 38.9 17.8 181 3625 female 2007 ## 8 39.2 19.6 195 4675 male 2007 ## 9 34.1 18.1 193 3475 <NA> 2007 ## 10 42 20.2 190 4250 <NA> 2007 ## # ... with 334 more rows
Kode:
penguins %>%
select(-c(7:8))
Output:
## # A tibble: 344 x 6 ## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g ## <fct> <fct> <dbl> <dbl> <int> <int> ## 1 Adelie Torgersen 39.1 18.7 181 3750 ## 2 Adelie Torgersen 39.5 17.4 186 3800 ## 3 Adelie Torgersen 40.3 18 195 3250 ## 4 Adelie Torgersen NA NA NA NA ## 5 Adelie Torgersen 36.7 19.3 193 3450 ## 6 Adelie Torgersen 39.3 20.6 190 3650 ## 7 Adelie Torgersen 38.9 17.8 181 3625 ## 8 Adelie Torgersen 39.2 19.6 195 4675 ## 9 Adelie Torgersen 34.1 18.1 193 3475 ## 10 Adelie Torgersen 42 20.2 190 4250 ## # ... with 334 more rows
Pilih kolom berdasarkan nama kolom parsial
Kita dapat memilih kolom berdasarkan nama kolom parsial.
Cara ini akan sangat berguna jika kita memiliki banyak kolom dengan pola nama yang serupa.
3. Pilih kolom berdasarkan nama kolom parsial: fungsi starts_with()
Sebagai contoh, kita akan memilih kolom dengan nama yang berawal dengan huruf b
dan bill
.
Kode:
penguins %>%
select(starts_with("bill"))
Output:
## # A tibble: 344 x 2 ## bill_length_mm bill_depth_mm ## <dbl> <dbl> ## 1 39.1 18.7 ## 2 39.5 17.4 ## 3 40.3 18 ## 4 NA NA ## 5 36.7 19.3 ## 6 39.3 20.6 ## 7 38.9 17.8 ## 8 39.2 19.6 ## 9 34.1 18.1 ## 10 42 20.2 ## # ... with 334 more rows
Kode:
penguins %>%
select(species, starts_with("bill"))
Output:
## # A tibble: 344 x 3 ## species bill_length_mm bill_depth_mm ## <fct> <dbl> <dbl> ## 1 Adelie 39.1 18.7 ## 2 Adelie 39.5 17.4 ## 3 Adelie 40.3 18 ## 4 Adelie NA NA ## 5 Adelie 36.7 19.3 ## 6 Adelie 39.3 20.6 ## 7 Adelie 38.9 17.8 ## 8 Adelie 39.2 19.6 ## 9 Adelie 34.1 18.1 ## 10 Adelie 42 20.2 ## # ... with 334 more rows
Kode:
penguins %>%
select(species,starts_with("b"))
Output:
## # A tibble: 344 x 4 ## species bill_length_mm bill_depth_mm body_mass_g ## <fct> <dbl> <dbl> <int> ## 1 Adelie 39.1 18.7 3750 ## 2 Adelie 39.5 17.4 3800 ## 3 Adelie 40.3 18 3250 ## 4 Adelie NA NA NA ## 5 Adelie 36.7 19.3 3450 ## 6 Adelie 39.3 20.6 3650 ## 7 Adelie 38.9 17.8 3625 ## 8 Adelie 39.2 19.6 4675 ## 9 Adelie 34.1 18.1 3475 ## 10 Adelie 42 20.2 4250 ## # ... with 334 more rows
4. Pilih kolom berdasarkan nama kolom parsial: fungsi ends_with()
Sebagai contoh, kita akan memilih kolom dengan nama yang berakhir dengan huruf mm
.
Kode:
penguins %>%
select(ends_with("mm"))
Output:
## # A tibble: 344 x 3 ## bill_length_mm bill_depth_mm flipper_length_mm ## <dbl> <dbl> <int> ## 1 39.1 18.7 181 ## 2 39.5 17.4 186 ## 3 40.3 18 195 ## 4 NA NA NA ## 5 36.7 19.3 193 ## 6 39.3 20.6 190 ## 7 38.9 17.8 181 ## 8 39.2 19.6 195 ## 9 34.1 18.1 193 ## 10 42 20.2 190 ## # ... with 334 more rows
Kode:
penguins %>%
select(species, ends_with("mm"))
Output:
## # A tibble: 344 x 4 ## species bill_length_mm bill_depth_mm flipper_length_mm ## <fct> <dbl> <dbl> <int> ## 1 Adelie 39.1 18.7 181 ## 2 Adelie 39.5 17.4 186 ## 3 Adelie 40.3 18 195 ## 4 Adelie NA NA NA ## 5 Adelie 36.7 19.3 193 ## 6 Adelie 39.3 20.6 190 ## 7 Adelie 38.9 17.8 181 ## 8 Adelie 39.2 19.6 195 ## 9 Adelie 34.1 18.1 193 ## 10 Adelie 42 20.2 190 ## # ... with 334 more rows
5. Pilih kolom berdasarkan nama kolom parsial: fungsi contains()
Sebagai contoh, kita akan memilih kolom dengan nama yang memiliki length
di dalam namanya.
Kode:
penguins %>%
select(contains("length"))
Output:
## # A tibble: 344 x 2 ## bill_length_mm flipper_length_mm ## <dbl> <int> ## 1 39.1 181 ## 2 39.5 186 ## 3 40.3 195 ## 4 NA NA ## 5 36.7 193 ## 6 39.3 190 ## 7 38.9 181 ## 8 39.2 195 ## 9 34.1 193 ## 10 42 190 ## # ... with 334 more rows
Kode:
penguins %>%
select(contains("length"), ends_with("mm"))
Output:
## # A tibble: 344 x 3 ## bill_length_mm flipper_length_mm bill_depth_mm ## <dbl> <int> <dbl> ## 1 39.1 181 18.7 ## 2 39.5 186 17.4 ## 3 40.3 195 18 ## 4 NA NA NA ## 5 36.7 193 19.3 ## 6 39.3 190 20.6 ## 7 38.9 181 17.8 ## 8 39.2 195 19.6 ## 9 34.1 193 18.1 ## 10 42 190 20.2 ## # ... with 334 more rows
6. Pilih kolom berdasarkan sebagian nama kolom: fungsi matches()
Jika data kita memiliki kolom dengan nama yang berpola tetapi tidak memiliki pola yang serupa, kita dapat menggunakan fungsi matches
.
Berikut contohnya:
Kode:
penguins %>%
select(matches("b.+th")) # select column that starts with "b" and has "th" in its name.
Output:
## # A tibble: 344 x 2 ## bill_length_mm bill_depth_mm ## <dbl> <dbl> ## 1 39.1 18.7 ## 2 39.5 17.4 ## 3 40.3 18 ## 4 NA NA ## 5 36.7 19.3 ## 6 39.3 20.6 ## 7 38.9 17.8 ## 8 39.2 19.6 ## 9 34.1 18.1 ## 10 42 20.2 ## # ... with 334 more rows
Kode:
penguins %>%
select(matches("b.+th"), ends_with("mm"))
Output:
## # A tibble: 344 x 3 ## bill_length_mm bill_depth_mm flipper_length_mm ## <dbl> <dbl> <int> ## 1 39.1 18.7 181 ## 2 39.5 17.4 186 ## 3 40.3 18 195 ## 4 NA NA NA ## 5 36.7 19.3 193 ## 6 39.3 20.6 190 ## 7 38.9 17.8 181 ## 8 39.2 19.6 195 ## 9 34.1 18.1 193 ## 10 42 20.2 190 ## # ... with 334 more rows
Kode:
penguins %>%
select(matches("b.+th.+mm"))
Output:
## # A tibble: 344 x 2 ## bill_length_mm bill_depth_mm ## <dbl> <dbl> ## 1 39.1 18.7 ## 2 39.5 17.4 ## 3 40.3 18 ## 4 NA NA ## 5 36.7 19.3 ## 6 39.3 20.6 ## 7 38.9 17.8 ## 8 39.2 19.6 ## 9 34.1 18.1 ## 10 42 20.2 ## # ... with 334 more rows
7. Pilih kolom berdasarkan nama kolom yang telah diidentifikasi sebelumnya
Ada cara lain untuk mengurangi waktu mengetik ulang nama kolom.
Caranya, kita menyiapkan nama kolom, lalu merujuknya ke dalam fungsi select
.
Pertama, kita siapkan nama-nama kolom yang akan kita pilih.
Kode:
measurement <- c("bill_length_mm", "bill_depth_mm", "flipper_length_mm", "body_mass_g")
Selanjutnya, kita gunakan fungsi select
untuk memilih kolom-kolom yang sudah kita siapkan.
Kode:
penguins %>%
select(species,measurement)
Output:
## # A tibble: 344 x 5 ## species bill_length_mm bill_depth_mm flipper_length_mm body_mass_g ## <fct> <dbl> <dbl> <int> <int> ## 1 Adelie 39.1 18.7 181 3750 ## 2 Adelie 39.5 17.4 186 3800 ## 3 Adelie 40.3 18 195 3250 ## 4 Adelie NA NA NA NA ## 5 Adelie 36.7 19.3 193 3450 ## 6 Adelie 39.3 20.6 190 3650 ## 7 Adelie 38.9 17.8 181 3625 ## 8 Adelie 39.2 19.6 195 4675 ## 9 Adelie 34.1 18.1 193 3475 ## 10 Adelie 42 20.2 190 4250 ## # ... with 334 more rows
Fungsi Select_if
memungkinkan kita untuk memilih kolom berdasarkan fungsi logika.
Kita dapat memilih kolom berdasarkan tipe datanya menggunakan fungsi select_if
diikuti denganis.character
, is.numeric
,is.logical
atau tipe data lain yang kita inginkan.
Kode:
penguins %>%
select_if(is.numeric)
Output:
## # A tibble: 344 x 5 ## bill_length_mm bill_depth_mm flipper_length_mm body_mass_g year ## <dbl> <dbl> <int> <int> <int> ## 1 39.1 18.7 181 3750 2007 ## 2 39.5 17.4 186 3800 2007 ## 3 40.3 18 195 3250 2007 ## 4 NA NA NA NA 2007 ## 5 36.7 19.3 193 3450 2007 ## 6 39.3 20.6 190 3650 2007 ## 7 38.9 17.8 181 3625 2007 ## 8 39.2 19.6 195 4675 2007 ## 9 34.1 18.1 193 3475 2007 ## 10 42 20.2 190 4250 2007 ## # ... with 334 more rows
Kode:
penguins %>%
select_if(is.factor)
Output:
## # A tibble: 344 x 3 ## species island sex ## <fct> <fct> <fct> ## 1 Adelie Torgersen male ## 2 Adelie Torgersen female ## 3 Adelie Torgersen female ## 4 Adelie Torgersen <NA> ## 5 Adelie Torgersen female ## 6 Adelie Torgersen male ## 7 Adelie Torgersen female ## 8 Adelie Torgersen male ## 9 Adelie Torgersen <NA> ## 10 Adelie Torgersen <NA> ## # ... with 334 more rows
Bagian 2: Menyusun ulang kolom
9. Menggunakan fungsi select()
Kita dapat mengatur ulang kolom menggunakan fungsi select
.
Urutan kolom yang kita tambahkan akan menentukan urutan kemunculannya di keluaran.
Misal kita ingin memilih nama kolom dengan urutan: species
, island
, year
, sex
.
Kode:
penguins %>%
select(species, island, year, sex)
Output:
## # A tibble: 344 x 4 ## species island year sex ## <fct> <fct> <int> <fct> ## 1 Adelie Torgersen 2007 male ## 2 Adelie Torgersen 2007 female ## 3 Adelie Torgersen 2007 female ## 4 Adelie Torgersen 2007 <NA> ## 5 Adelie Torgersen 2007 female ## 6 Adelie Torgersen 2007 male ## 7 Adelie Torgersen 2007 female ## 8 Adelie Torgersen 2007 male ## 9 Adelie Torgersen 2007 <NA> ## 10 Adelie Torgersen 2007 <NA> ## # ... with 334 more rows
Dengan cara yang sama, kita dapat mengganti urutannya.
Kode:
penguins %>%
select(species, sex, island, year)
Output:
## # A tibble: 344 x 4 ## species sex island year ## <fct> <fct> <fct> <int> ## 1 Adelie male Torgersen 2007 ## 2 Adelie female Torgersen 2007 ## 3 Adelie female Torgersen 2007 ## 4 Adelie <NA> Torgersen 2007 ## 5 Adelie female Torgersen 2007 ## 6 Adelie male Torgersen 2007 ## 7 Adelie female Torgersen 2007 ## 8 Adelie male Torgersen 2007 ## 9 Adelie <NA> Torgersen 2007 ## 10 Adelie <NA> Torgersen 2007 ## # ... with 334 more rows
10. Fungsi everything
Namun, jika kita hanya ingin memindahkan beberapa kolom ke depan (kiri), kita dapat menambahkan fungsi everything ()
di belakang nama kolom yang ingin kita pindah ke depan lokasinya.
Misal, kita iningn memindah kolom species
, year
, sex
, dan membiarkan kolom lainnya pada urutan yang sebelumnya, kita gunakan kode di bawah ini:
Kode:
penguins %>%
select(species, year, sex, everything())
Output:
## # A tibble: 344 x 8 ## species year sex island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g ## <fct> <int> <fct> <fct> <dbl> <dbl> <int> <int> ## 1 Adelie 2007 male Torgersen 39.1 18.7 181 3750 ## 2 Adelie 2007 female Torgersen 39.5 17.4 186 3800 ## 3 Adelie 2007 female Torgersen 40.3 18 195 3250 ## 4 Adelie 2007 <NA> Torgersen NA NA NA NA ## 5 Adelie 2007 female Torgersen 36.7 19.3 193 3450 ## 6 Adelie 2007 male Torgersen 39.3 20.6 190 3650 ## 7 Adelie 2007 female Torgersen 38.9 17.8 181 3625 ## 8 Adelie 2007 male Torgersen 39.2 19.6 195 4675 ## 9 Adelie 2007 <NA> Torgersen 34.1 18.1 193 3475 ## 10 Adelie 2007 <NA> Torgersen 42 20.2 190 4250 ## # ... with 334 more rows
Bagian 3: Ubah nama dan format ulang kolom
11. Ganti nama kolom: fungsi select()
Kita dapat mengganti nama kolom langsung di fungsi pilih
.Caranya dengan menggunakan format nama baru = nama lama
.
Misal kita ingin memilih kolom year
dengan nama baru time
dan kolom island
dengan nama baru area
.
Kode:
penguins %>%
select(time = year, area= island)
Output:
## # A tibble: 344 x 2 ## time area ## <int> <fct> ## 1 2007 Torgersen ## 2 2007 Torgersen ## 3 2007 Torgersen ## 4 2007 Torgersen ## 5 2007 Torgersen ## 6 2007 Torgersen ## 7 2007 Torgersen ## 8 2007 Torgersen ## 9 2007 Torgersen ## 10 2007 Torgersen ## # ... with 334 more rows
12. Ganti nama kolom: fungsi rename()
Jika kita ingin tetap mempertahakankan semua kolom, kita dapat mengganti nama kolom menggunakan pernyataan rename ()
.
Perhatikan perbedaan hasilnya dengan kode pada langkah sebelumnya.
Kode:
penguins %>%
rename(time = year, area= island)
Output:
## # A tibble: 344 x 8 ## species area bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex time ## <fct> <fct> <dbl> <dbl> <int> <int> <fct> <int> ## 1 Adelie Torgersen 39.1 18.7 181 3750 male 2007 ## 2 Adelie Torgersen 39.5 17.4 186 3800 female 2007 ## 3 Adelie Torgersen 40.3 18 195 3250 female 2007 ## 4 Adelie Torgersen NA NA NA NA <NA> 2007 ## 5 Adelie Torgersen 36.7 19.3 193 3450 female 2007 ## 6 Adelie Torgersen 39.3 20.6 190 3650 male 2007 ## 7 Adelie Torgersen 38.9 17.8 181 3625 female 2007 ## 8 Adelie Torgersen 39.2 19.6 195 4675 male 2007 ## 9 Adelie Torgersen 34.1 18.1 193 3475 <NA> 2007 ## 10 Adelie Torgersen 42 20.2 190 4250 <NA> 2007 ## # ... with 334 more rows
Format ulang semua kolom
14. Format menjadi huruf besar: toupper()
Untuk format nama semua kolom, pertama kita menggunakan fungsi select_all ()
untuk memungkinkan perubahan pada semua kolom, lalu gunakan toupper ()
untuk mengubah semua nama kolom menjadi huruf besar.
Kode:
penguins %>%
select_all(toupper)
Output:
## # A tibble: 344 x 8 ## SPECIES ISLAND BILL_LENGTH_MM BILL_DEPTH_MM FLIPPER_LENGTH_MM BODY_MASS_G SEX YEAR ## <fct> <fct> <dbl> <dbl> <int> <int> <fct> <int> ## 1 Adelie Torgersen 39.1 18.7 181 3750 male 2007 ## 2 Adelie Torgersen 39.5 17.4 186 3800 female 2007 ## 3 Adelie Torgersen 40.3 18 195 3250 female 2007 ## 4 Adelie Torgersen NA NA NA NA <NA> 2007 ## 5 Adelie Torgersen 36.7 19.3 193 3450 female 2007 ## 6 Adelie Torgersen 39.3 20.6 190 3650 male 2007 ## 7 Adelie Torgersen 38.9 17.8 181 3625 female 2007 ## 8 Adelie Torgersen 39.2 19.6 195 4675 male 2007 ## 9 Adelie Torgersen 34.1 18.1 193 3475 <NA> 2007 ## 10 Adelie Torgersen 42 20.2 190 4250 <NA> 2007 ## # ... with 334 more rows
15. Format menjadi huruf kecil: tolower()
Dengan cara yang sama, kita bisa format semua nama ke lowercase
dengan fungsi tolower
.
Kode:
penguins %>%
select_all(tolower)
Output:
## # A tibble: 344 x 8 ## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex year ## <fct> <fct> <dbl> <dbl> <int> <int> <fct> <int> ## 1 Adelie Torgersen 39.1 18.7 181 3750 male 2007 ## 2 Adelie Torgersen 39.5 17.4 186 3800 female 2007 ## 3 Adelie Torgersen 40.3 18 195 3250 female 2007 ## 4 Adelie Torgersen NA NA NA NA <NA> 2007 ## 5 Adelie Torgersen 36.7 19.3 193 3450 female 2007 ## 6 Adelie Torgersen 39.3 20.6 190 3650 male 2007 ## 7 Adelie Torgersen 38.9 17.8 181 3625 female 2007 ## 8 Adelie Torgersen 39.2 19.6 195 4675 male 2007 ## 9 Adelie Torgersen 34.1 18.1 193 3475 <NA> 2007 ## 10 Adelie Torgersen 42 20.2 190 4250 <NA> 2007 ## # ... with 334 more rows
Bagian 4: Melakukan filter data
16. Pilih Random N Rows: fungsi sample_n ()
Fungsi sample_n ()
akan memilih baris acak dari dataset (atau tabel).
Parameter kedua memberi tahu R jumlah baris yang harus dipilih.
Misal, kita ingin memilih 5 baris data kita secara random. Gunakan kode ini:
Kode:
penguins %>%
sample_n(5)
## # A tibble: 5 x 8 ## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex year ## <fct> <fct> <dbl> <dbl> <int> <int> <fct> <int> ## 1 Chinstrap Dream 47.5 16.8 199 3900 female 2008 ## 2 Chinstrap Dream 51.3 18.2 197 3750 male 2007 ## 3 Chinstrap Dream 42.5 16.7 187 3350 female 2008 ## 4 Gentoo Biscoe 43.5 14.2 220 4700 female 2008 ## 5 Adelie Torgersen 38.6 17 188 2900 female 2009
17. Memilih acak berdasarkan proporsi: fungsi sample_frac()
Fungsi sample_frac()
memilih N% baris acak dari dataset (atau tabel). Parameter kedua memberi tahu R pecahan (0-1) baris yang akan dipilih.
Misal kita ingin memilih 0,01 atau 1% dari data kita, kita bisa gunakan kode ini:
Kode:
penguins %>%
sample_frac(0.01)
Output:
## # A tibble: 3 x 8 ## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex year ## <fct> <fct> <dbl> <dbl> <int> <int> <fct> <int> ## 1 Chinstrap Dream 46.4 18.6 190 3450 female 2007 ## 2 Gentoo Biscoe 46.5 14.8 217 5200 female 2008 ## 3 Adelie Torgersen 41.4 18.5 202 3875 male 2009
Chaining code
Kita dapat menggunakan beberapa fungsi sekaligus dalam satu set kode.
Kita dapat melanjutkan perintah dengan perintah lain dengan menambahkan operator pipa %>%
di akhir kode sebelumnya.
Misalnya, kita dapat memilih beberapa kolom dan kemudian mengubah semua nama kolom menjadi format huruf besar.
Kode:
penguins %>%
select(species, island, year, sex) %>%
select_all(toupper)
Output:
## # A tibble: 344 x 4 ## SPECIES ISLAND YEAR SEX ## <fct> <fct> <int> <fct> ## 1 Adelie Torgersen 2007 male ## 2 Adelie Torgersen 2007 female ## 3 Adelie Torgersen 2007 female ## 4 Adelie Torgersen 2007 <NA> ## 5 Adelie Torgersen 2007 female ## 6 Adelie Torgersen 2007 male ## 7 Adelie Torgersen 2007 female ## 8 Adelie Torgersen 2007 male ## 9 Adelie Torgersen 2007 <NA> ## 10 Adelie Torgersen 2007 <NA> ## # ... with 334 more rows
Your turn:
Ambil sampel sepuluh persen dari data, tampilkan hanya kolom
spesies
,pulau
, dantahun
!
17. Filter baris berdasarkan variabel numerik
Operator yang paling sering digunakan untuk ini adalah >
, > =
, <
, <=
, ==
dan ! =
.
Berikut beberapa contohnya.
Kode:
penguins %>%
select(species, island, year, sex) %>%
filter(year < 2008)
Output:
## # A tibble: 110 x 4 ## species island year sex ## <fct> <fct> <int> <fct> ## 1 Adelie Torgersen 2007 male ## 2 Adelie Torgersen 2007 female ## 3 Adelie Torgersen 2007 female ## 4 Adelie Torgersen 2007 <NA> ## 5 Adelie Torgersen 2007 female ## 6 Adelie Torgersen 2007 male ## 7 Adelie Torgersen 2007 female ## 8 Adelie Torgersen 2007 male ## 9 Adelie Torgersen 2007 <NA> ## 10 Adelie Torgersen 2007 <NA> ## # ... with 100 more rows
Kode:
penguins %>%
select(species, island, year, sex, bill_length_mm) %>%
filter(bill_length_mm > 35, bill_length_mm < 38)
Output:
## # A tibble: 51 x 5 ## species island year sex bill_length_mm ## <fct> <fct> <int> <fct> <dbl> ## 1 Adelie Torgersen 2007 female 36.7 ## 2 Adelie Torgersen 2007 <NA> 37.8 ## 3 Adelie Torgersen 2007 <NA> 37.8 ## 4 Adelie Torgersen 2007 female 36.6 ## 5 Adelie Biscoe 2007 female 37.8 ## 6 Adelie Biscoe 2007 male 37.7 ## 7 Adelie Biscoe 2007 female 35.9 ## 8 Adelie Biscoe 2007 female 35.3 ## 9 Adelie Biscoe 2007 female 37.9 ## 10 Adelie Dream 2007 male 37.2 ## # ... with 41 more rows
18. Filter baris berdasarkan variabel numerik: fungsi between()
Kita dapat menggunakan between()
untuk memilih rentang nilai. Ini adalah cara yang lebih singkat untuk mengekspresikan > =
.. & .. <=
.
Kode:
penguins %>%
select(species, island, year, sex, bill_length_mm) %>%
filter(bill_length_mm >= 35, bill_length_mm <= 38)
Output:
## # A tibble: 53 x 5 ## species island year sex bill_length_mm ## <fct> <fct> <int> <fct> <dbl> ## 1 Adelie Torgersen 2007 female 36.7 ## 2 Adelie Torgersen 2007 <NA> 37.8 ## 3 Adelie Torgersen 2007 <NA> 37.8 ## 4 Adelie Torgersen 2007 female 36.6 ## 5 Adelie Biscoe 2007 female 37.8 ## 6 Adelie Biscoe 2007 male 37.7 ## 7 Adelie Biscoe 2007 female 35.9 ## 8 Adelie Biscoe 2007 female 35.3 ## 9 Adelie Biscoe 2007 female 37.9 ## 10 Adelie Dream 2007 male 37.2 ## # ... with 43 more rows
Kode:
penguins %>%
select(species, island, year, sex, bill_length_mm) %>%
filter(between(bill_length_mm,35,38))
Output:
## # A tibble: 53 x 5 ## species island year sex bill_length_mm ## <fct> <fct> <int> <fct> <dbl> ## 1 Adelie Torgersen 2007 female 36.7 ## 2 Adelie Torgersen 2007 <NA> 37.8 ## 3 Adelie Torgersen 2007 <NA> 37.8 ## 4 Adelie Torgersen 2007 female 36.6 ## 5 Adelie Biscoe 2007 female 37.8 ## 6 Adelie Biscoe 2007 male 37.7 ## 7 Adelie Biscoe 2007 female 35.9 ## 8 Adelie Biscoe 2007 female 35.3 ## 9 Adelie Biscoe 2007 female 37.9 ## 10 Adelie Dream 2007 male 37.2 ## # ... with 43 more rows
19. Filter baris berdasarkan variabel numerik: fungsi near()
Fungsi lain yang dapat digunakan adalah near()
, yang akan memilih semua nilai yang mendekati nilai yang diberikan.
Untuk menunjukkan seberapa jauh nilainya, kami menetapkan toleransi menggunakan pernyataan tol
.
Kode:
penguins %>%
select(species, island, year, sex, bill_length_mm) %>%
filter(near(bill_length_mm,35,tol = 0.5))
Output:
## # A tibble: 7 x 5 ## species island year sex bill_length_mm ## <fct> <fct> <int> <fct> <dbl> ## 1 Adelie Torgersen 2007 male 34.6 ## 2 Adelie Biscoe 2007 female 35.3 ## 3 Adelie Biscoe 2008 female 35 ## 4 Adelie Torgersen 2008 female 34.6 ## 5 Adelie Torgersen 2008 male 35.1 ## 6 Adelie Biscoe 2009 female 35 ## 7 Adelie Torgersen 2009 female 35.2
Kode:
penguins %>%
select(species, island, year, sex, bill_length_mm) %>%
filter(near(bill_length_mm,35,tol = sd(na.omit(bill_length_mm))))
Output:
## # A tibble: 106 x 5 ## species island year sex bill_length_mm ## <fct> <fct> <int> <fct> <dbl> ## 1 Adelie Torgersen 2007 male 39.1 ## 2 Adelie Torgersen 2007 female 39.5 ## 3 Adelie Torgersen 2007 female 40.3 ## 4 Adelie Torgersen 2007 female 36.7 ## 5 Adelie Torgersen 2007 male 39.3 ## 6 Adelie Torgersen 2007 female 38.9 ## 7 Adelie Torgersen 2007 male 39.2 ## 8 Adelie Torgersen 2007 <NA> 34.1 ## 9 Adelie Torgersen 2007 <NA> 37.8 ## 10 Adelie Torgersen 2007 <NA> 37.8 ## # ... with 96 more rows
20. Filter baris berdasarkan data dengan penulisan yang sama persis
Kode:
penguins %>%
select(species, island, year, sex, bill_length_mm) %>%
filter(species == "Chinstrap")
Output:
## # A tibble: 68 x 5 ## species island year sex bill_length_mm ## <fct> <fct> <int> <fct> <dbl> ## 1 Chinstrap Dream 2007 female 46.5 ## 2 Chinstrap Dream 2007 male 50 ## 3 Chinstrap Dream 2007 male 51.3 ## 4 Chinstrap Dream 2007 female 45.4 ## 5 Chinstrap Dream 2007 male 52.7 ## 6 Chinstrap Dream 2007 female 45.2 ## 7 Chinstrap Dream 2007 female 46.1 ## 8 Chinstrap Dream 2007 male 51.3 ## 9 Chinstrap Dream 2007 female 46 ## 10 Chinstrap Dream 2007 male 51.3 ## # ... with 58 more rows
Untuk mengeluarkan data tertentu, kita dapat menggunakan operator!=
.
Kode:
penguins %>%
select(species, island, year, sex, bill_length_mm) %>%
filter(species != "Chinstrap")
Output:
## # A tibble: 276 x 5 ## species island year sex bill_length_mm ## <fct> <fct> <int> <fct> <dbl> ## 1 Adelie Torgersen 2007 male 39.1 ## 2 Adelie Torgersen 2007 female 39.5 ## 3 Adelie Torgersen 2007 female 40.3 ## 4 Adelie Torgersen 2007 <NA> NA ## 5 Adelie Torgersen 2007 female 36.7 ## 6 Adelie Torgersen 2007 male 39.3 ## 7 Adelie Torgersen 2007 female 38.9 ## 8 Adelie Torgersen 2007 male 39.2 ## 9 Adelie Torgersen 2007 <NA> 34.1 ## 10 Adelie Torgersen 2007 <NA> 42 ## # ... with 266 more rows
Sedangkan untuk memilih lebih dari satu record, kita dapat menggunakan |
atau %in%
.
Kode:
penguins %>%
select(species, island, year, sex, bill_length_mm) %>%
filter(species == "Chinstrap" | species == "Adelie")
Output:
## # A tibble: 220 x 5 ## species island year sex bill_length_mm ## <fct> <fct> <int> <fct> <dbl> ## 1 Adelie Torgersen 2007 male 39.1 ## 2 Adelie Torgersen 2007 female 39.5 ## 3 Adelie Torgersen 2007 female 40.3 ## 4 Adelie Torgersen 2007 <NA> NA ## 5 Adelie Torgersen 2007 female 36.7 ## 6 Adelie Torgersen 2007 male 39.3 ## 7 Adelie Torgersen 2007 female 38.9 ## 8 Adelie Torgersen 2007 male 39.2 ## 9 Adelie Torgersen 2007 <NA> 34.1 ## 10 Adelie Torgersen 2007 <NA> 42 ## # ... with 210 more rows
Kode:
penguins %>%
select(species, island, year, sex, bill_length_mm) %>%
filter(species %in% c("Chinstrap", "Adelie"))
Output:
## # A tibble: 220 x 5 ## species island year sex bill_length_mm ## <fct> <fct> <int> <fct> <dbl> ## 1 Adelie Torgersen 2007 male 39.1 ## 2 Adelie Torgersen 2007 female 39.5 ## 3 Adelie Torgersen 2007 female 40.3 ## 4 Adelie Torgersen 2007 <NA> NA ## 5 Adelie Torgersen 2007 female 36.7 ## 6 Adelie Torgersen 2007 male 39.3 ## 7 Adelie Torgersen 2007 female 38.9 ## 8 Adelie Torgersen 2007 male 39.2 ## 9 Adelie Torgersen 2007 <NA> 34.1 ## 10 Adelie Torgersen 2007 <NA> 42 ## # ... with 210 more rows
21. Filter baris berdasarkan nama kolom parsial yang memiliki pola serupa
Kita bisa menggunakan str_detect ()
dari paket stringr
(bagian daritidyverse
) untuk mencari kecocokan parsial.
Kode:
penguins %>%
select(species, island, year, sex, bill_length_mm) %>%
filter(str_detect(island, pattern = "gersen"))
Output:
## # A tibble: 52 x 5 ## species island year sex bill_length_mm ## <fct> <fct> <int> <fct> <dbl> ## 1 Adelie Torgersen 2007 male 39.1 ## 2 Adelie Torgersen 2007 female 39.5 ## 3 Adelie Torgersen 2007 female 40.3 ## 4 Adelie Torgersen 2007 <NA> NA ## 5 Adelie Torgersen 2007 female 36.7 ## 6 Adelie Torgersen 2007 male 39.3 ## 7 Adelie Torgersen 2007 female 38.9 ## 8 Adelie Torgersen 2007 male 39.2 ## 9 Adelie Torgersen 2007 <NA> 34.1 ## 10 Adelie Torgersen 2007 <NA> 42 ## # ... with 42 more rows
Filter baris berdasarkan beberapa kondisi
Opsi filter juga mengizinkan filter DAN dan ATAU:
filter (condition1, condition2)
akan mengembalikan baris tempat kedua ketentuan terpenuhi.filter (condition1,! condition2)
akan mengembalikan semua baris di mana kondisi satu benar tetapi kondisi 2 tidak.filter (condition1 | condition2)
akan mengembalikan baris di mana kondisi 1 dan / atau kondisi 2 terpenuhi.filter (xor (condition1, condition2)
akan mengembalikan semua baris yang hanya satu ketentuan yang terpenuhi, dan tidak jika kedua ketentuan terpenuhi.
22. Memfilter baris dengan kedua kondisi terpenuhi
Kode:
penguins %>%
select(species, island, year, sex, bill_length_mm) %>%
filter(str_detect(island, pattern = "gersen"), species== "Adelie")
Output:
## # A tibble: 52 x 5 ## species island year sex bill_length_mm ## <fct> <fct> <int> <fct> <dbl> ## 1 Adelie Torgersen 2007 male 39.1 ## 2 Adelie Torgersen 2007 female 39.5 ## 3 Adelie Torgersen 2007 female 40.3 ## 4 Adelie Torgersen 2007 <NA> NA ## 5 Adelie Torgersen 2007 female 36.7 ## 6 Adelie Torgersen 2007 male 39.3 ## 7 Adelie Torgersen 2007 female 38.9 ## 8 Adelie Torgersen 2007 male 39.2 ## 9 Adelie Torgersen 2007 <NA> 34.1 ## 10 Adelie Torgersen 2007 <NA> 42 ## # ... with 42 more rows
23.Memfilter baris dengan kondisi pertama terpenuhi dan kondisi kedua tidak terpenuhi
Kode:
penguins %>%
select(species, island, year, sex, bill_length_mm) %>%
filter(str_detect(island, pattern = "gersen"), !species== "Chinstrap")
Output:
## # A tibble: 52 x 5 ## species island year sex bill_length_mm ## <fct> <fct> <int> <fct> <dbl> ## 1 Adelie Torgersen 2007 male 39.1 ## 2 Adelie Torgersen 2007 female 39.5 ## 3 Adelie Torgersen 2007 female 40.3 ## 4 Adelie Torgersen 2007 <NA> NA ## 5 Adelie Torgersen 2007 female 36.7 ## 6 Adelie Torgersen 2007 male 39.3 ## 7 Adelie Torgersen 2007 female 38.9 ## 8 Adelie Torgersen 2007 male 39.2 ## 9 Adelie Torgersen 2007 <NA> 34.1 ## 10 Adelie Torgersen 2007 <NA> 42 ## # ... with 42 more rows
24. Memfilter baris dengan kondisi pertama dan-atau kondisi kedua terpenuhi
Kode:
penguins %>%
select(species, island, year, sex, bill_length_mm) %>%
filter(str_detect(island, pattern = "gersen") | species== "Chinstrap")
Output:
## # A tibble: 120 x 5 ## species island year sex bill_length_mm ## <fct> <fct> <int> <fct> <dbl> ## 1 Adelie Torgersen 2007 male 39.1 ## 2 Adelie Torgersen 2007 female 39.5 ## 3 Adelie Torgersen 2007 female 40.3 ## 4 Adelie Torgersen 2007 <NA> NA ## 5 Adelie Torgersen 2007 female 36.7 ## 6 Adelie Torgersen 2007 male 39.3 ## 7 Adelie Torgersen 2007 female 38.9 ## 8 Adelie Torgersen 2007 male 39.2 ## 9 Adelie Torgersen 2007 <NA> 34.1 ## 10 Adelie Torgersen 2007 <NA> 42 ## # ... with 110 more rows
25. Menggunakan fungsi xor
Kode:
penguins %>%
select(species, island, year, sex, bill_length_mm) %>%
filter(xor(str_detect(island, pattern = "gersen"), species== "Chinstrap"))
Output:
## # A tibble: 120 x 5 ## species island year sex bill_length_mm ## <fct> <fct> <int> <fct> <dbl> ## 1 Adelie Torgersen 2007 male 39.1 ## 2 Adelie Torgersen 2007 female 39.5 ## 3 Adelie Torgersen 2007 female 40.3 ## 4 Adelie Torgersen 2007 <NA> NA ## 5 Adelie Torgersen 2007 female 36.7 ## 6 Adelie Torgersen 2007 male 39.3 ## 7 Adelie Torgersen 2007 female 38.9 ## 8 Adelie Torgersen 2007 male 39.2 ## 9 Adelie Torgersen 2007 <NA> 34.1 ## 10 Adelie Torgersen 2007 <NA> 42 ## # ... with 110 more rows
26. Memilih atau tidak memilih baris kosong
Untuk menyaring baris kosong, kita dapat menggunakan fungsi is.na ()
di dalam fungsi filter ()
.
Kode:
penguins %>%
select(species, island, year, sex)
Output:
## # A tibble: 344 x 4 ## species island year sex ## <fct> <fct> <int> <fct> ## 1 Adelie Torgersen 2007 male ## 2 Adelie Torgersen 2007 female ## 3 Adelie Torgersen 2007 female ## 4 Adelie Torgersen 2007 <NA> ## 5 Adelie Torgersen 2007 female ## 6 Adelie Torgersen 2007 male ## 7 Adelie Torgersen 2007 female ## 8 Adelie Torgersen 2007 male ## 9 Adelie Torgersen 2007 <NA> ## 10 Adelie Torgersen 2007 <NA> ## # ... with 334 more rows
Kode:
penguins %>%
select(species, island, year, sex) %>%
filter(is.na(sex))
Output:
## # A tibble: 11 x 4 ## species island year sex ## <fct> <fct> <int> <fct> ## 1 Adelie Torgersen 2007 <NA> ## 2 Adelie Torgersen 2007 <NA> ## 3 Adelie Torgersen 2007 <NA> ## 4 Adelie Torgersen 2007 <NA> ## 5 Adelie Torgersen 2007 <NA> ## 6 Adelie Dream 2007 <NA> ## 7 Gentoo Biscoe 2007 <NA> ## 8 Gentoo Biscoe 2008 <NA> ## 9 Gentoo Biscoe 2009 <NA> ## 10 Gentoo Biscoe 2009 <NA> ## 11 Gentoo Biscoe 2009 <NA>
Kode:
penguins %>%
select(species, island, year, sex) %>%
filter(!is.na(sex))
Output:
## # A tibble: 333 x 4 ## species island year sex ## <fct> <fct> <int> <fct> ## 1 Adelie Torgersen 2007 male ## 2 Adelie Torgersen 2007 female ## 3 Adelie Torgersen 2007 female ## 4 Adelie Torgersen 2007 female ## 5 Adelie Torgersen 2007 male ## 6 Adelie Torgersen 2007 female ## 7 Adelie Torgersen 2007 male ## 8 Adelie Torgersen 2007 female ## 9 Adelie Torgersen 2007 male ## 10 Adelie Torgersen 2007 male ## # ... with 323 more rows
Filter di beberapa kolom
27. Filter_all
Kita bisa menggunakan fungsi filter_all ()
untuk memilih baris yang mengandung kata (atau karakter) tertentu dalam beberapa kolom.
Dalam kode contoh di bawah ini, kita mencari string “ae” di semua kolom.
Kita ingin menyimpan baris di mana string “ae” ada di SETIAP variabel, jadi kita akan menggunakan kondisi di any_vars ()
.
Kode:
penguins %>%
select(species, island, year, sex) %>%
filter_all(any_vars(str_detect(., pattern = "sen")))
Output:
## # A tibble: 52 x 4 ## species island year sex ## <fct> <fct> <int> <fct> ## 1 Adelie Torgersen 2007 male ## 2 Adelie Torgersen 2007 female ## 3 Adelie Torgersen 2007 female ## 4 Adelie Torgersen 2007 <NA> ## 5 Adelie Torgersen 2007 female ## 6 Adelie Torgersen 2007 male ## 7 Adelie Torgersen 2007 female ## 8 Adelie Torgersen 2007 male ## 9 Adelie Torgersen 2007 <NA> ## 10 Adelie Torgersen 2007 <NA> ## # ... with 42 more rows
Fungsi any_vars ()
bekerja dengan logika OR
, yang akan mengembalikan semua baris yang berisi kata (atau karakter) tertentu di semua kolom yang tersedia.
Jika kita ingin memilih baris yang berisi karakter tertentu di setiap kolom (logika AND) kita bisa menggunakan fungsi all_vars ()
.
Kode:
penguins %>%
select(species, island, year, sex) %>%
filter_all(all_vars(str_detect(., pattern = "sen")))
Output:
## # A tibble: 0 x 4 ## # ... with 4 variables: species <fct>, island <fct>, year <int>, sex <fct>
28. Filter_at
filter_at ()
tidak memfilter semua kolom, kita hanya dapat memilih kolom di mana perubahan harus dilakukan melalui argumen vars ()
.
Kode:
# filter string with pattern "sen" in 'island' column
penguins %>%
select(species, island, year, sex) %>%
filter_at(vars(island), any_vars(str_detect(., pattern = "sen")))
Output:
## # A tibble: 52 x 4 ## species island year sex ## <fct> <fct> <int> <fct> ## 1 Adelie Torgersen 2007 male ## 2 Adelie Torgersen 2007 female ## 3 Adelie Torgersen 2007 female ## 4 Adelie Torgersen 2007 <NA> ## 5 Adelie Torgersen 2007 female ## 6 Adelie Torgersen 2007 male ## 7 Adelie Torgersen 2007 female ## 8 Adelie Torgersen 2007 male ## 9 Adelie Torgersen 2007 <NA> ## 10 Adelie Torgersen 2007 <NA> ## # ... with 42 more rows
Part 5: Mengurutkan data
29. Mengurutkan data dengan fungsi arrange()
Caranya, gunakan fungsi arrange
dan tuliskan kolom dasar pengurutan data, misal kolom sex
.
Kode:
penguins %>%
select(species, island, year, sex) %>%
arrange(sex)
Output:
## # A tibble: 344 x 4 ## species island year sex ## <fct> <fct> <int> <fct> ## 1 Adelie Torgersen 2007 female ## 2 Adelie Torgersen 2007 female ## 3 Adelie Torgersen 2007 female ## 4 Adelie Torgersen 2007 female ## 5 Adelie Torgersen 2007 female ## 6 Adelie Torgersen 2007 female ## 7 Adelie Torgersen 2007 female ## 8 Adelie Torgersen 2007 female ## 9 Adelie Biscoe 2007 female ## 10 Adelie Biscoe 2007 female ## # ... with 334 more rows
30. Urutan descending
Untuk melakukan urutan terbalik (dari besar ke kecil), tambahkan desc
pada fungsi arrange
.
Kode:
penguins %>%
select(species, island, year, sex) %>%
arrange(desc(sex))
Output:
## # A tibble: 344 x 4 ## species island year sex ## <fct> <fct> <int> <fct> ## 1 Adelie Torgersen 2007 male ## 2 Adelie Torgersen 2007 male ## 3 Adelie Torgersen 2007 male ## 4 Adelie Torgersen 2007 male ## 5 Adelie Torgersen 2007 male ## 6 Adelie Torgersen 2007 male ## 7 Adelie Torgersen 2007 male ## 8 Adelie Biscoe 2007 male ## 9 Adelie Biscoe 2007 male ## 10 Adelie Biscoe 2007 male ## # ... with 334 more rows
31. Mengurutkan data berdasarkan beberapa kolom
Caranya sama persis, hanya tambahkan nama kolom dalam fungsi arrange
.
Misal kita hendak mengurutkan data berdasarkan kolom sex
lalu mengurutkan kembali berdasarkan kolom island
.
Kode:
penguins %>%
select(species, island, year, sex) %>%
arrange(sex, island)
Output:
## # A tibble: 344 x 4 ## species island year sex ## <fct> <fct> <int> <fct> ## 1 Adelie Biscoe 2007 female ## 2 Adelie Biscoe 2007 female ## 3 Adelie Biscoe 2007 female ## 4 Adelie Biscoe 2007 female ## 5 Adelie Biscoe 2007 female ## 6 Adelie Biscoe 2008 female ## 7 Adelie Biscoe 2008 female ## 8 Adelie Biscoe 2008 female ## 9 Adelie Biscoe 2008 female ## 10 Adelie Biscoe 2008 female ## # ... with 334 more rows
Part 6: Membuat variabel atau kolom baru
Membuat kolom
Untuk membuat variabel baru (atau kolom) kita menggunakan fungsi mutate ()
.
Apa pun di dalam mutate ()
bisa berupa kolom baru (dengan memberi nama kolom baru pada mutasi), atau bisa mengganti kolom saat ini (dengan mempertahankan nama kolom yang sama).
32. Mutate dengan fungsi paste()
Kode:
penguins %>%
select(species, island, year, sex) %>%
mutate(data.source = paste("LTER"))
Output:
## # A tibble: 344 x 5 ## species island year sex data.source ## <fct> <fct> <int> <fct> <chr> ## 1 Adelie Torgersen 2007 male LTER ## 2 Adelie Torgersen 2007 female LTER ## 3 Adelie Torgersen 2007 female LTER ## 4 Adelie Torgersen 2007 <NA> LTER ## 5 Adelie Torgersen 2007 female LTER ## 6 Adelie Torgersen 2007 male LTER ## 7 Adelie Torgersen 2007 female LTER ## 8 Adelie Torgersen 2007 male LTER ## 9 Adelie Torgersen 2007 <NA> LTER ## 10 Adelie Torgersen 2007 <NA> LTER ## # ... with 334 more rows
33. Mutate dengan perhitungan matematika
Misal kita akan tambahkan kolom panjang flipper
dalam satuan centimeter.
Kode:
penguins %>%
mutate (flipper_length_cm = flipper_length_mm/10) %>%
select(species, sex, flipper_length_cm, flipper_length_mm)
Output:
## # A tibble: 344 x 4 ## species sex flipper_length_cm flipper_length_mm ## <fct> <fct> <dbl> <int> ## 1 Adelie male 18.1 181 ## 2 Adelie female 18.6 186 ## 3 Adelie female 19.5 195 ## 4 Adelie <NA> NA NA ## 5 Adelie female 19.3 193 ## 6 Adelie male 19 190 ## 7 Adelie female 18.1 181 ## 8 Adelie male 19.5 195 ## 9 Adelie <NA> 19.3 193 ## 10 Adelie <NA> 19 190 ## # ... with 334 more rows
34. Mutate dengan fungsi row_number()
Langkah ini akan sangat berguna jika kita ingin membuat ID unik pada data kita.
Kode:
penguins %>%
select(species, island, year, sex) %>%
mutate(penguin.id = paste("penguin", row_number()))
Output:
## # A tibble: 344 x 5 ## species island year sex penguin.id ## <fct> <fct> <int> <fct> <chr> ## 1 Adelie Torgersen 2007 male penguin 1 ## 2 Adelie Torgersen 2007 female penguin 2 ## 3 Adelie Torgersen 2007 female penguin 3 ## 4 Adelie Torgersen 2007 <NA> penguin 4 ## 5 Adelie Torgersen 2007 female penguin 5 ## 6 Adelie Torgersen 2007 male penguin 6 ## 7 Adelie Torgersen 2007 female penguin 7 ## 8 Adelie Torgersen 2007 male penguin 8 ## 9 Adelie Torgersen 2007 <NA> penguin 9 ## 10 Adelie Torgersen 2007 <NA> penguin 10 ## # ... with 334 more rows
35. Mutate dengan logika if-then-else
Pada poin ini, kita akan menambahkan kolom bernama species.id
yang berisi kode dari setiap spesies penguin dalam data kita yaitu Ad
untuk Adelie
, Ch
untuk Chinstrap
, dan Ge
untuk Gentoo
.
Kode:
unique(penguins$species)
Output:
## [1] Adelie Gentoo Chinstrap ## Levels: Adelie Chinstrap Gentoo
Kode:
penguins %>%
mutate(species.id = if_else(species == "Adelie", "Ad",
if_else(species == "Chinstrap", "Ch",
"Ge"))) %>%
select(species, species.id)
Output:
## # A tibble: 344 x 2 ## species species.id ## <fct> <chr> ## 1 Adelie Ad ## 2 Adelie Ad ## 3 Adelie Ad ## 4 Adelie Ad ## 5 Adelie Ad ## 6 Adelie Ad ## 7 Adelie Ad ## 8 Adelie Ad ## 9 Adelie Ad ## 10 Adelie Ad ## # ... with 334 more rows
36. Membuat kolom baru tipe diskrit (dua level): if_else()
Fungsi if_else()
dapat kita manfaatkan untuk membuat kolom baru hasil konversi dari dat numerik ke data diskrit.
Misal kita hendak melakukan klasifikasi untuk massa tubuh yang akan kita kelaskan menjadi kelas low
jika memiliki berat <= 4500 gram, dan kelas high
jika lebih dari 4500 gram.
Kode:
penguins %>%
mutate(body_mass_class = if_else(body_mass_g <= 4500, "low", "high")) %>%
select(species, body_mass_g, body_mass_class)
Output:
## # A tibble: 344 x 3 ## species body_mass_g body_mass_class ## <fct> <int> <chr> ## 1 Adelie 3750 low ## 2 Adelie 3800 low ## 3 Adelie 3250 low ## 4 Adelie NA <NA> ## 5 Adelie 3450 low ## 6 Adelie 3650 low ## 7 Adelie 3625 low ## 8 Adelie 4675 high ## 9 Adelie 3475 low ## 10 Adelie 4250 low ## # ... with 334 more rows
37. Membuat kolom baru tipe diskrit (multiple level): case_when()
Fungsi case_when()
mengijinkan kita untuk memasukkan lebih banyak statemen dan lebih mudah dibaca jika dibandingkan dengan fungsi if_else
.
Pertama kita masukkan statement kita, selanjutnya untuk kelas terakhir kita hanya perlu menambahkan TRUE ~ "newname"
.
Misal kita akan kelaskan panjang flipper menjadi kelas low
jika panjangnya kurang dari 190 mm; medium
jika panjangnya antara 190-201 mm; dan high
jika lebih panjang daripada 210 mm.
Kode:
penguins$flipper_length_mm
Output:
## [1] 181 186 195 NA 193 190 181 195 193 190 186 180 182 191 198 185 195 197 184 194 174 180 189 185 180 187 183 187 172 180 178 178 ## [33] 188 184 195 196 190 180 181 184 182 195 186 196 185 190 182 179 190 191 186 188 190 200 187 191 186 193 181 194 185 195 185 192 ## [65] 184 192 195 188 190 198 190 190 196 197 190 195 191 184 187 195 189 196 187 193 191 194 190 189 189 190 202 205 185 186 187 208 ## [97] 190 196 178 192 192 203 183 190 193 184 199 190 181 197 198 191 193 197 191 196 188 199 189 189 187 198 176 202 186 199 191 195 ## [129] 191 210 190 197 193 199 187 190 191 200 185 193 193 187 188 190 192 185 190 184 195 193 187 201 211 230 210 218 215 210 211 219 ## [161] 209 215 214 216 214 213 210 217 210 221 209 222 218 215 213 215 215 215 216 215 210 220 222 209 207 230 220 220 213 219 208 208 ## [193] 208 225 210 216 222 217 210 225 213 215 210 220 210 225 217 220 208 220 208 224 208 221 214 231 219 230 214 229 220 223 216 221 ## [225] 221 217 216 230 209 220 215 223 212 221 212 224 212 228 218 218 212 230 218 228 212 224 214 226 216 222 203 225 219 228 215 228 ## [257] 216 215 210 219 208 209 216 229 213 230 217 230 217 222 214 NA 215 222 212 213 192 196 193 188 197 198 178 197 195 198 193 194 ## [289] 185 201 190 201 197 181 190 195 181 191 187 193 195 197 200 200 191 205 187 201 187 203 195 199 195 210 192 205 210 187 196 196 ## [321] 196 201 190 212 187 198 199 201 193 203 187 197 191 203 202 194 206 189 195 207 202 193 210 198
Kode:
penguins %>%
mutate(flipper_length_class = case_when(
flipper_length_mm >= 210 ~"high",
flipper_length_mm >= 190 ~"medium",
TRUE~ "low")) %>%
select(species, flipper_length_mm, flipper_length_class)
Output:
## # A tibble: 344 x 3 ## species flipper_length_mm flipper_length_class ## <fct> <int> <chr> ## 1 Adelie 181 low ## 2 Adelie 186 low ## 3 Adelie 195 medium ## 4 Adelie NA low ## 5 Adelie 193 medium ## 6 Adelie 190 medium ## 7 Adelie 181 low ## 8 Adelie 195 medium ## 9 Adelie 193 medium ## 10 Adelie 190 medium ## # ... with 334 more rows
Selanjutnya, untuk memberikan urutan atau tingkatan kelas (data ordinal) menjadi urutan low-medium-high
, kita bisa gunakan factor()
.
Kode:
penguins %>%
mutate(flipper_length_class = case_when(
flipper_length_mm >= 210 ~"high",
flipper_length_mm >= 190 ~"medium",
TRUE~ "low")) %>%
select(species, flipper_length_mm, flipper_length_class) %>%
mutate(flipper_length_class = factor(flipper_length_class,
levels = c("low", "medium",
"high")))
Output:
## # A tibble: 344 x 3 ## species flipper_length_mm flipper_length_class ## <fct> <int> <fct> ## 1 Adelie 181 low ## 2 Adelie 186 low ## 3 Adelie 195 medium ## 4 Adelie NA low ## 5 Adelie 193 medium ## 6 Adelie 190 medium ## 7 Adelie 181 low ## 8 Adelie 195 medium ## 9 Adelie 193 medium ## 10 Adelie 190 medium ## # ... with 334 more rows
Part 6: Merangkum data
Menghitung jumlah data
38. Menghitung jumlah observasi: count()
Kita dapat menggunakan fungsi count()
untuk mengetahui jumlah observasi pada variabel yang spesifik.
Misal jumlah observasi berdasarkan spesies.
Kode:
penguins %>%
count(species)
Output:
## # A tibble: 3 x 2 ## species n ## <fct> <int> ## 1 Adelie 152 ## 2 Chinstrap 68 ## 3 Gentoo 124
Jumlah observasi berdasarkan jenis kelaminnya.
Kode:
penguins %>%
count(sex)
Output:
## # A tibble: 3 x 2 ## sex n ## <fct> <int> ## 1 female 165 ## 2 male 168 ## 3 <NA> 11
Atau berdasarkan keduanya.
Kode:
penguins %>%
count(species,sex)
Output:
## # A tibble: 8 x 3 ## species sex n ## <fct> <fct> <int> ## 1 Adelie female 73 ## 2 Adelie male 73 ## 3 Adelie <NA> 6 ## 4 Chinstrap female 34 ## 5 Chinstrap male 34 ## 6 Gentoo female 58 ## 7 Gentoo male 61 ## 8 Gentoo <NA> 5
39. Menambahkan kolom yang berisi jumlah observasi
Beberapa fungsi yang dapat kita gunakan:
tally()
– menghitung jumlah total observasiadd_tally()
– menghitung jumlah total observasi dan memindahnya ke kolom baruadd_count()
– mengambil variabel sebagai argumen dan menambah kolom baru yang berisi jumlah observasi.
Kode:
penguins %>%
tally()
Output:
## # A tibble: 1 x 1 ## n ## <int> ## 1 344
Kode:
penguins %>%
select(species, sex) %>%
add_tally()
Output:
## # A tibble: 344 x 3 ## species sex n ## <fct> <fct> <int> ## 1 Adelie male 344 ## 2 Adelie female 344 ## 3 Adelie female 344 ## 4 Adelie <NA> 344 ## 5 Adelie female 344 ## 6 Adelie male 344 ## 7 Adelie female 344 ## 8 Adelie male 344 ## 9 Adelie <NA> 344 ## 10 Adelie <NA> 344 ## # ... with 334 more rows
Kode:
penguins %>%
select(species, sex) %>%
add_count(species,sex)
Output:
## # A tibble: 344 x 3 ## species sex n ## <fct> <fct> <int> ## 1 Adelie male 73 ## 2 Adelie female 73 ## 3 Adelie female 73 ## 4 Adelie <NA> 6 ## 5 Adelie female 73 ## 6 Adelie male 73 ## 7 Adelie female 73 ## 8 Adelie male 73 ## 9 Adelie <NA> 6 ## 10 Adelie <NA> 6 ## # ... with 334 more rows
Merangkum data
40. Fungsi summarise()
Untuk menggunakan fungsi summarize ()
, cukup tambahkan nama kolom baru = fungsi matematika yang dikehendaki atau nama_kolom = fungsi (variabel)
.
Contoh di bawah ini adalah untuk menghitung nilai mean
dan max
, dengan menambahkan na.omit
untuk mengabaikan nilai NA dalam perhitungan.
Kode:
penguins %>%
summarise(mean_mass = mean(na.omit(body_mass_g)),
max_mass = max(na.omit(body_mass_g)))
Output:
## # A tibble: 1 x 2 ## mean_mass max_mass ## <dbl> <int> ## 1 4202. 6300
41. Merangkum berdasarkan kelompok: fungsi group_by()
Untuk merangkum berdasarkan grup, tentukan variabel sebagai dasar pengelompokan menggunakan fungsi group_by ()
.
Kode:
penguins %>%
group_by(species) %>%
summarise(mean_mass = mean(na.omit(body_mass_g)),
max_mass = max(na.omit(body_mass_g)))
Output:
## # A tibble: 3 x 3 ## species mean_mass max_mass ## <fct> <dbl> <int> ## 1 Adelie 3701. 4775 ## 2 Chinstrap 3733. 4800 ## 3 Gentoo 5076. 6300
Summarise()
bekerja dengan hampir semua fungsi agregat, dan memungkinkan aritmatika tambahan:
n ()
– memberikan jumlah observasin_distinct (var)
– memberikan jumlah nilai unik varsum(var)
,max(var)
,min(var)
,.mean(var)
,median(var)
,sd(var)
,IQR(var)
.
42. Ringkas semua kolom: summarise_all()
Fungsi summarise_all ()
membutuhkan fungsi sebagai argumen, yang akan diterapkan ke semua kolom.
Kode:
penguins %>%
group_by(species) %>%
summarise_all(mean, na.rm= TRUE)
Output:
## # A tibble: 3 x 8 ## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex year ## <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> ## 1 Adelie NA 38.8 18.3 190. 3701. NA 2008. ## 2 Chinstrap NA 48.8 18.4 196. 3733. NA 2008. ## 3 Gentoo NA 47.5 15.0 217. 5076. NA 2008.
43. Ringkas semua kolom: summarise_if()
Fungsi summarise_if()
membutuhkan dua argumen:
- Pertama, dia membutuhkan informasi tentang kolom yang ingin dipertimbangkan.
- Kedua, diperlukan informasi tentang bagaimana meringkas data itu, yang perlu menjadi suatu fungsi.
Sebagai contoh, kita akan melakukan perhitungan nilai rata-rata (mean), untuk semua kolom yang memiliki tipe data numerik
Kode:
penguins %>%
group_by(species) %>%
summarise_if(is.numeric, mean, na.rm= TRUE)
Output:
## # A tibble: 3 x 6 ## species bill_length_mm bill_depth_mm flipper_length_mm body_mass_g year ## <fct> <dbl> <dbl> <dbl> <dbl> <dbl> ## 1 Adelie 38.8 18.3 190. 3701. 2008. ## 2 Chinstrap 48.8 18.4 196. 3733. 2008. ## 3 Gentoo 47.5 15.0 217. 5076. 2008.
Cheatsheet
Untuk lebih memudahkan proses belajar, silahkan juga didownload cheatsheet di bawah ini.
Wrap up
Demikian tutorial data manipulation di R menggunakan package dplyr
.
Tulisan ini akan selalu diupdate secara berkala.
Bookmark post ini agar dapat diakses dengan cepat saat kita membutuhkan.
Jika menemui kendala atau kesulitan, silahkan langsung bertanya melalui kolom komentar di bawah ya!