Pengenalan Tidyverse
Install Package
Untuk dapat menggunakan package tidyverse
maka package tersebut harus di-install dan di-load terlebih dahulu dengan menggunakan perintah:
Data
Dataset yang dapat digunakan untuk latihan tersedia dalam beberapa package di R. untuk melihat data apa saya yang tersedia dapat menggunakan perintah:
maka akan muncul data yang tersedia dalam berbagai package beserta penjelasan singkatnya. Data yang akan digunakan dalam tugas ini adalah msleep
yang tersedia pada package ggplot2
. Karena package ggplot2
berada di dalam package tidyverse
maka tidak memerlukan instalasi package tersebut. Jika dataset yang digunakan berasal dari package yang belum ada maka package tersebut perlu di-install dan di-load terlebih dahulu.
Untuk mengetahui deksripsi data msleep
maka dapat menggunakan perintah:
Penjelasan tentang data msleep
An updated and expanded version of the mammals sleep dataset. Description: This is an updated and expanded version of the mammals sleep dataset. Updated sleep times and weights were taken from V. M. Savage and G. B. West. A quantitative, theoretical framework for understanding mammalian sleep. Proceedings of the National Academy of Sciences, 104 (3):1051-1056, 2007.
untuk melihat field (kolom/ peubah) apa saja yang terdapat pada data tersebut maka dapat menggunakan fungsi glimpse
Rows: 83
Columns: 11
$ name <chr> "Cheetah", "Owl monkey", "Mountain beaver", "Greater s...
$ genus <chr> "Acinonyx", "Aotus", "Aplodontia", "Blarina", "Bos", "...
$ vore <chr> "carni", "omni", "herbi", "omni", "herbi", "herbi", "c...
$ order <chr> "Carnivora", "Primates", "Rodentia", "Soricomorpha", "...
$ conservation <chr> "lc", NA, "nt", "lc", "domesticated", NA, "vu", NA, "d...
$ sleep_total <dbl> 12.1, 17.0, 14.4, 14.9, 4.0, 14.4, 8.7, 7.0, 10.1, 3.0...
$ sleep_rem <dbl> NA, 1.8, 2.4, 2.3, 0.7, 2.2, 1.4, NA, 2.9, NA, 0.6, 0....
$ sleep_cycle <dbl> NA, NA, NA, 0.1333333, 0.6666667, 0.7666667, 0.3833333...
$ awake <dbl> 11.9, 7.0, 9.6, 9.1, 20.0, 9.6, 15.3, 17.0, 13.9, 21.0...
$ brainwt <dbl> NA, 0.01550, NA, 0.00029, 0.42300, NA, NA, NA, 0.07000...
$ bodywt <dbl> 50.000, 0.480, 1.350, 0.019, 600.000, 3.850, 20.490, 0...
Package dplyr
Salah satu package yang terdapat dalam package tidyverse
yang dapat digunakan dalam transformasi data adalah dplyr
. Beberapa fungsi yang dapat digunakan pada package dplyr
adalah
filter()
allows you to subset observation based on their valuearrange()
takes a data frame and a set of column names to order byselect()
allows you to rapidly zoom in on a useful subset using operations based on the name of variablesmutate()
add new columns that are functions of existing columnssummarise()
untuk menyingkat data
Berikut akan dibahas cara penggunaan fungsi tersebut dalam data yang sudah disiapkan sebelumnya yaitu data msleep
.
Fungsi filter()
Apabila dari data msleep
tersebut kita ingin melihat data pola tidur dari orde ‘Carnivora’ saja maka dapat menggunakan fungsi filter
. Perintah yang dapat digunakan adalah
# A tibble: 12 x 11
name genus vore order conservation sleep_total sleep_rem sleep_cycle awake
<chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Chee~ Acin~ carni Carn~ lc 12.1 NA NA 11.9
2 Nort~ Call~ carni Carn~ vu 8.7 1.4 0.383 15.3
3 Dog Canis carni Carn~ domesticated 10.1 2.9 0.333 13.9
4 Dome~ Felis carni Carn~ domesticated 12.5 3.2 0.417 11.5
5 Gray~ Hali~ carni Carn~ lc 6.2 1.5 NA 17.8
6 Tiger Pant~ carni Carn~ en 15.8 NA NA 8.2
7 Jagu~ Pant~ carni Carn~ nt 10.4 NA NA 13.6
8 Lion Pant~ carni Carn~ vu 13.5 NA NA 10.5
9 Casp~ Phoca carni Carn~ vu 3.5 0.4 NA 20.5
10 Genet Gene~ carni Carn~ <NA> 6.3 1.3 NA 17.7
11 Arct~ Vulp~ carni Carn~ <NA> 12.5 NA NA 11.5
12 Red ~ Vulp~ carni Carn~ <NA> 9.8 2.4 0.35 14.2
# ... with 2 more variables: brainwt <dbl>, bodywt <dbl>
Apabila kita ingin melihat data pola tidur dari orde ‘Carnivora’ yang memiliki waktu tidur kurang dari 10 jam maka dapat menggunakan perintah:
# A tibble: 5 x 11
name genus vore order conservation sleep_total sleep_rem sleep_cycle awake
<chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Nort~ Call~ carni Carn~ vu 8.7 1.4 0.383 15.3
2 Gray~ Hali~ carni Carn~ lc 6.2 1.5 NA 17.8
3 Casp~ Phoca carni Carn~ vu 3.5 0.4 NA 20.5
4 Genet Gene~ carni Carn~ <NA> 6.3 1.3 NA 17.7
5 Red ~ Vulp~ carni Carn~ <NA> 9.8 2.4 0.35 14.2
# ... with 2 more variables: brainwt <dbl>, bodywt <dbl>
Fungsi arrange ()
Apabila dari data msleep
tersebut kita ingin mengurutkan data berdasarkan field (kolom/peubah) tertentu, misalkan kita akan mengurutkan data tersebut secara ascending berdasarkan kolom sleep_total, maka perintah yang digunakan adalah:
## mengurutkan data berdasarkan sleep total dari yang terkecil ke yang terbesar
msleep %>%
arrange(sleep_total)
# A tibble: 83 x 11
name genus vore order conservation sleep_total sleep_rem sleep_cycle awake
<chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Gira~ Gira~ herbi Arti~ cd 1.9 0.4 NA 22.1
2 Pilo~ Glob~ carni Ceta~ cd 2.7 0.1 NA 21.4
3 Horse Equus herbi Peri~ domesticated 2.9 0.6 1 21.1
4 Roe ~ Capr~ herbi Arti~ lc 3 NA NA 21
5 Donk~ Equus herbi Peri~ domesticated 3.1 0.4 NA 20.9
6 Afri~ Loxo~ herbi Prob~ vu 3.3 NA NA 20.7
7 Casp~ Phoca carni Carn~ vu 3.5 0.4 NA 20.5
8 Sheep Ovis herbi Arti~ domesticated 3.8 0.6 NA 20.2
9 Asia~ Elep~ herbi Prob~ en 3.9 NA NA 20.1
10 Cow Bos herbi Arti~ domesticated 4 0.7 0.667 20
# ... with 73 more rows, and 2 more variables: brainwt <dbl>, bodywt <dbl>
Selanjutnya, apabila kita ingin mengurutkan data tersebut secara descending, maka perintah yang digunakan adalah:
## mengurutkan data berdasarkan sleep total dari yang terbesar ke yang terkecil
msleep %>%
arrange(desc(sleep_total))
# A tibble: 83 x 11
name genus vore order conservation sleep_total sleep_rem sleep_cycle awake
<chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Litt~ Myot~ inse~ Chir~ <NA> 19.9 2 0.2 4.1
2 Big ~ Epte~ inse~ Chir~ lc 19.7 3.9 0.117 4.3
3 Thic~ Lutr~ carni Dide~ lc 19.4 6.6 NA 4.6
4 Gian~ Prio~ inse~ Cing~ en 18.1 6.1 NA 5.9
5 Nort~ Dide~ omni Dide~ lc 18 4.9 0.333 6
6 Long~ Dasy~ carni Cing~ lc 17.4 3.1 0.383 6.6
7 Owl ~ Aotus omni Prim~ <NA> 17 1.8 NA 7
8 Arct~ Sper~ herbi Rode~ lc 16.6 NA NA 7.4
9 Gold~ Sper~ herbi Rode~ lc 15.9 3 NA 8.1
10 Tiger Pant~ carni Carn~ en 15.8 NA NA 8.2
# ... with 73 more rows, and 2 more variables: brainwt <dbl>, bodywt <dbl>
Fungsi select ()
Apabila dari data msleep
tersebut kita hanya tertarik pada field (kolom/peubah) orde hewan (order), nama (name), lama waktu tidur (sleep_total), dan lama waktu hewan tersebut siaga (awake), maka dapat menggunakan fungsi select
, perintah yang digunakan adalah:
# A tibble: 83 x 4
order name sleep_total awake
<chr> <chr> <dbl> <dbl>
1 Carnivora Cheetah 12.1 11.9
2 Primates Owl monkey 17 7
3 Rodentia Mountain beaver 14.4 9.6
4 Soricomorpha Greater short-tailed shrew 14.9 9.1
5 Artiodactyla Cow 4 20
6 Pilosa Three-toed sloth 14.4 9.6
7 Carnivora Northern fur seal 8.7 15.3
8 Rodentia Vesper mouse 7 17
9 Carnivora Dog 10.1 13.9
10 Artiodactyla Roe deer 3 21
# ... with 73 more rows
Fungsi mutate()
Apabila dari data msleep
tersebut kita ingin menambahan satu field (kolom/peubah) baru, maka dapat menggunakan fungsi mutate
. Sebagai contoh, kita akan menambahkan informasi perbandingan sleep_rem terhadap sleep_total masing-masing hewan maka dapat menggunakan perintah:
Fungsi summarise ()
Apabila dari data msleep
tersebut kita ingin melakukan peringkasan data maka dapat menggunakan fungsi summarise
. Fungsi ini digunakan bersama dengan group_by
. Sebagai contoh, untuk melihat rata-rata total waktu tidur (sleep_total) pada setiap orde (order) maka dapat menggunakan perintah:
## assign hasil ke variabel avg.sleep
avg.sleep<-msleep %>%
group_by(order) %>%
summarise(mean=mean(sleep_total))
## menampilkan hasil avg.sleep
avg.sleep
# A tibble: 19 x 2
order mean
* <chr> <dbl>
1 Afrosoricida 15.6
2 Artiodactyla 4.52
3 Carnivora 10.1
4 Cetacea 4.5
5 Chiroptera 19.8
6 Cingulata 17.8
7 Didelphimorphia 18.7
8 Diprotodontia 12.4
9 Erinaceomorpha 10.2
10 Hyracoidea 5.67
11 Lagomorpha 8.4
12 Monotremata 8.6
13 Perissodactyla 3.47
14 Pilosa 14.4
15 Primates 10.5
16 Proboscidea 3.6
17 Rodentia 12.5
18 Scandentia 8.9
19 Soricomorpha 11.1
Penggunaan Fungsi Secara Bersamaan
Semua fungsi tersebut dapat digunakan secara bersamaan, sebagai contoh apabila kita ingin melihat selisih antara rata - rata waktu terjaga dengan rata - rata waktu tidur untuk masing - masing orde hewan yang lebih besar dari 0, kemudian data tersebut diurutkan dari selisih yang paling besar ke yang paling kecil dengan hanya menampilkan kolom order, name, sleep_total dan awake saja, maka dapat menggunakan fungsi:
## assign hasil fungsi tersebut ke variabel hasil1
hasil1 <- msleep %>%
select(order, name, sleep_total, awake) %>%
group_by(order) %>%
summarise(mean_sleep = mean(sleep_total),
mean_awake = mean(awake)) %>%
arrange(desc(order)) %>%
mutate(selisih=mean_sleep-mean_awake) %>%
filter(selisih>0)
## menampilkan hasil1
hasil1
# A tibble: 7 x 4
order mean_sleep mean_awake selisih
<chr> <dbl> <dbl> <dbl>
1 Rodentia 12.5 11.5 0.936
2 Pilosa 14.4 9.6 4.8
3 Diprotodontia 12.4 11.6 0.800
4 Didelphimorphia 18.7 5.3 13.4
5 Cingulata 17.8 6.25 11.5
6 Chiroptera 19.8 4.20 15.6
7 Afrosoricida 15.6 8.4 7.2
Referensi
Anisa, R., Dito, G.A., dan Nurussadad, A.A. (February 9, 2021). Praktikum 01 - Pengenalan tidyverse. Retrieved from https://rpubs.com/nurussadad/STA581-01-tidyverse
Proceedings of the National Academy of Sciences, 104 (3):1051-1056, 2007.
Wickham, H., & Grolemund, G. (2020, May 15). R for Data Science. O’Reilly Media, Inc.