Pengenalan Tidyverse

Install Package

Untuk dapat menggunakan package tidyverse maka package tersebut harus di-install dan di-load terlebih dahulu dengan menggunakan perintah:

# Install package
install.packages("tidyverse")
# Load package
library(tidyverse)

Data

Dataset yang dapat digunakan untuk latihan tersedia dalam beberapa package di R. untuk melihat data apa saya yang tersedia dapat menggunakan perintah:

data(package = .packages(all.available = TRUE))

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:

?msleep

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

glimpse(msleep)
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 value
  • arrange() takes a data frame and a set of column names to order by
  • select() allows you to rapidly zoom in on a useful subset using operations based on the name of variables
  • mutate() add new columns that are functions of existing columns
  • summarise() 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

msleep %>% 
  filter(order=="Carnivora")
# 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:

msleep %>% 
  filter(order=="Carnivora", sleep_total<10)
# 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:

msleep %>%
  select(order, name, sleep_total, awake)
# 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:

msleep %>% 
  mutate(sleep_ratio= sleep_rem/sleep_total)

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.