[P-01] Tugas Praktikum STA581 SAINS DATA

INSTRUKSI TUGAS

Instruksi untuk Tugas Praktikum 01 ini adalah sebagai berikut:

  • Cari Datasets selain iris dan Teams

  • Anda hanya boleh menggunakan data di package datasets maupun datasets di package R lainnya.

  • Pada datasets yang Anda pilih, Praktikkan penggunaan fungsi:summarise(), arrange(), filter(), mutate(), select(). Minimal 1 kali secara terpisah.

  • Praktikan penggunaan fungsi tersebut secara bersama-sama (jumlahnya bebas).

Import Data

Data yang digunakan adalah Datasets attenu dengan memanfaatkan library(tidyverse)

library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.2     v purrr   0.3.4
## v tibble  3.0.4     v dplyr   1.0.3
## v tidyr   1.1.2     v stringr 1.4.0
## v readr   1.4.0     v forcats 0.5.0
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
(attenu <- tibble::as_tibble(datasets::attenu))#Datasets yang digunakan
## # A tibble: 182 x 5
##    event   mag station  dist accel
##    <dbl> <dbl> <fct>   <dbl> <dbl>
##  1     1   7   117        12 0.359
##  2     2   7.4 1083      148 0.014
##  3     2   7.4 1095       42 0.196
##  4     2   7.4 283        85 0.135
##  5     2   7.4 135       107 0.062
##  6     2   7.4 475       109 0.054
##  7     2   7.4 113       156 0.014
##  8     2   7.4 1008      224 0.018
##  9     2   7.4 1028      293 0.01 
## 10     2   7.4 2001      359 0.004
## # ... with 172 more rows
??attenu #untuk mengetahui deskripsi data attenu

Diperoleh deskripsi data attenu adalah sebagai berikut: “This data gives peak accelerations measured at various observation stations for 23 earthquakes in California. The data have been used by various workers to estimate the attenuating affect of distance on ground acceleration” (The Joyner–Boore Attenuation Data).

dim(attenu) #dimensi atau ukuran data
## [1] 182   5

Data attenu tersebut terdiri dari 182 baris (pengamatan) dan 5 kolom (peubah), yaitu:[,1] Event Number; [,2]Moment Magnitude; [,3]Station Number; [,4]Station-hypocenter distance (km); dan [,5] Peak acceleration (g)

head(attenu)
## # A tibble: 6 x 5
##   event   mag station  dist accel
##   <dbl> <dbl> <fct>   <dbl> <dbl>
## 1     1   7   117        12 0.359
## 2     2   7.4 1083      148 0.014
## 3     2   7.4 1095       42 0.196
## 4     2   7.4 283        85 0.135
## 5     2   7.4 135       107 0.062
## 6     2   7.4 475       109 0.054
summary(attenu) #ringkasan data
##      event            mag           station         dist       
##  Min.   : 1.00   Min.   :5.000   117    :  5   Min.   :  0.50  
##  1st Qu.: 9.00   1st Qu.:5.300   1028   :  4   1st Qu.: 11.32  
##  Median :18.00   Median :6.100   113    :  4   Median : 23.40  
##  Mean   :14.74   Mean   :6.084   112    :  3   Mean   : 45.60  
##  3rd Qu.:20.00   3rd Qu.:6.600   135    :  3   3rd Qu.: 47.55  
##  Max.   :23.00   Max.   :7.700   (Other):147   Max.   :370.00  
##                                  NA's   : 16                   
##      accel        
##  Min.   :0.00300  
##  1st Qu.:0.04425  
##  Median :0.11300  
##  Mean   :0.15422  
##  3rd Qu.:0.21925  
##  Max.   :0.81000  
## 

Penggunaan Fungsi

Fungsi summarise()

  • Menghitung rata-rata Moment Magnitude untuk setiap Event Number
attenu %>% group_by(event) %>% summarise(meanMag=mean(mag), .groups='drop')
## # A tibble: 23 x 2
##    event meanMag
##  * <dbl>   <dbl>
##  1     1     7  
##  2     2     7.4
##  3     3     5.3
##  4     4     6.1
##  5     5     6.6
##  6     6     5.6
##  7     7     5.7
##  8     8     5.3
##  9     9     6.6
## 10    10     5.3
## # ... with 13 more rows
  • Menghitung rata-rata Station-hypocenter distance untuk setiap Event Number
attenu %>% group_by(event) %>% summarise(meanDist=mean(dist), .groups='drop')
## # A tibble: 23 x 2
##    event meanDist
##  * <dbl>    <dbl>
##  1     1     12  
##  2     2    189. 
##  3     3      8  
##  4     4     51.8
##  5     5    153. 
##  6     6     62  
##  7     7     62  
##  8     8     20.8
##  9     9     46.8
## 10    10     31  
## # ... with 13 more rows
  • Menghitung rata-rata Peak acceleration untuk setiap Event Number
attenu %>% group_by(event) %>% summarise(meanAccel=mean(accel), .groups='drop')
## # A tibble: 23 x 2
##    event meanAccel
##  * <dbl>     <dbl>
##  1     1    0.359 
##  2     2    0.0511
##  3     3    0.127 
##  4     4    0.197 
##  5     5    0.0275
##  6     6    0.005 
##  7     7    0.003 
##  8     8    0.118 
##  9     9    0.123 
## 10    10    0.03  
## # ... with 13 more rows

Fungsi arrange()

  • Mengurutkan data berdasarkan peubah Moment Magnitude dari nilai terkecil
attenu %>% arrange(mag)
## # A tibble: 182 x 5
##    event   mag station  dist accel
##    <dbl> <dbl> <fct>   <dbl> <dbl>
##  1    20     5 5055      7.5 0.264
##  2    20     5 942       8.8 0.263
##  3    20     5 5028      8.9 0.23 
##  4    20     5 5165      9.4 0.147
##  5    20     5 952       9.7 0.286
##  6    20     5 958       9.7 0.157
##  7    20     5 955      10.5 0.237
##  8    20     5 117      10.5 0.133
##  9    20     5 412      12   0.055
## 10    20     5 5053     12.2 0.097
## # ... with 172 more rows
  • Mengurutkan data berdasarkan peubah Moment Magnitude dari nilai terbesar
attenu %>% arrange(desc(mag))
## # A tibble: 182 x 5
##    event   mag station  dist accel
##    <dbl> <dbl> <fct>   <dbl> <dbl>
##  1    11   7.7 2714     45   0.11 
##  2    11   7.7 2708    145   0.01 
##  3    11   7.7 2715    300   0.01 
##  4    17   7.6 2734     25.4 0.16 
##  5    17   7.6 <NA>     32.9 0.064
##  6    17   7.6 2728     92.2 0.09 
##  7     2   7.4 1083    148   0.014
##  8     2   7.4 1095     42   0.196
##  9     2   7.4 283      85   0.135
## 10     2   7.4 135     107   0.062
## # ... with 172 more rows
  • Mengurutkan data berdasarkan peubah Peak acceleration dari nilai terbesar
attenu %>% arrange(desc(accel))
## # A tibble: 182 x 5
##    event   mag station  dist accel
##    <dbl> <dbl> <fct>   <dbl> <dbl>
##  1    19   6.5 5054      2.6 0.81 
##  2    19   6.5 942       1.3 0.72 
##  3    19   6.5 958       3.8 0.64 
##  4    19   6.5 955       6.8 0.61 
##  5    19   6.5 952       4   0.56 
##  6    19   6.5 5028      0.6 0.52 
##  7    19   6.5 5165      5.1 0.51 
##  8     4   6.1 1013      6.6 0.509
##  9     4   6.1 1014      9.3 0.467
## 10    19   6.5 <NA>      8.4 0.46 
## # ... with 172 more rows

Fungsi filter()

  • Memilih sebagian data berdasarkan peubah Moment Magnitude yang bernilai dibawah 4.0
attenu %>% filter(mag <= 4.0)
## # A tibble: 0 x 5
## # ... with 5 variables: event <dbl>, mag <dbl>, station <fct>, dist <dbl>,
## #   accel <dbl>
  • Memilih sebagian data berdasarkan peubah Moment Magnitude yang bernilai 5.0
attenu %>% filter(mag == 5.0)
## # A tibble: 16 x 5
##    event   mag station  dist accel
##    <dbl> <dbl> <fct>   <dbl> <dbl>
##  1    20     5 5055      7.5 0.264
##  2    20     5 942       8.8 0.263
##  3    20     5 5028      8.9 0.23 
##  4    20     5 5165      9.4 0.147
##  5    20     5 952       9.7 0.286
##  6    20     5 958       9.7 0.157
##  7    20     5 955      10.5 0.237
##  8    20     5 117      10.5 0.133
##  9    20     5 412      12   0.055
## 10    20     5 5053     12.2 0.097
## 11    20     5 5054     12.8 0.129
## 12    20     5 5058     14.6 0.192
## 13    20     5 5057     14.9 0.147
## 14    20     5 5115     17.6 0.154
## 15    20     5 5056     23.9 0.06 
## 16    20     5 5060     25   0.057
  • Memilih sebagian data berdasarkan peubah Moment Magnitude yang bernilai lebih dari 6.0
attenu %>% filter(mag >= 6.0)
## # A tibble: 102 x 5
##    event   mag station  dist accel
##    <dbl> <dbl> <fct>   <dbl> <dbl>
##  1     1   7   117        12 0.359
##  2     2   7.4 1083      148 0.014
##  3     2   7.4 1095       42 0.196
##  4     2   7.4 283        85 0.135
##  5     2   7.4 135       107 0.062
##  6     2   7.4 475       109 0.054
##  7     2   7.4 113       156 0.014
##  8     2   7.4 1008      224 0.018
##  9     2   7.4 1028      293 0.01 
## 10     2   7.4 2001      359 0.004
## # ... with 92 more rows

Fungsi select()

  • Memilih sebagian dari data, yaitu peubah Event Number, Station Number, dan Moment Magnitude
attenu %>% select(event,station,mag)
## # A tibble: 182 x 3
##    event station   mag
##    <dbl> <fct>   <dbl>
##  1     1 117       7  
##  2     2 1083      7.4
##  3     2 1095      7.4
##  4     2 283       7.4
##  5     2 135       7.4
##  6     2 475       7.4
##  7     2 113       7.4
##  8     2 1008      7.4
##  9     2 1028      7.4
## 10     2 2001      7.4
## # ... with 172 more rows
  • Memilih sebagian dari data, yaitu peubah Event Number, Station Number, dan Peak acceleration
attenu %>% select(event,station,accel)
## # A tibble: 182 x 3
##    event station accel
##    <dbl> <fct>   <dbl>
##  1     1 117     0.359
##  2     2 1083    0.014
##  3     2 1095    0.196
##  4     2 283     0.135
##  5     2 135     0.062
##  6     2 475     0.054
##  7     2 113     0.014
##  8     2 1008    0.018
##  9     2 1028    0.01 
## 10     2 2001    0.004
## # ... with 172 more rows

Fungsi mutate()

  • Menambahkan peubah baru pada data, misalkan disini ditambahkan peubah baru yaitu Z.mag
(myMag <- attenu %>% mutate(Z.mag = round((mag - mean(mag))/(sd(attenu$mag)/sqrt(nrow(attenu))),3)))
## # A tibble: 182 x 6
##    event   mag station  dist accel Z.mag
##    <dbl> <dbl> <fct>   <dbl> <dbl> <dbl>
##  1     1   7   117        12 0.359  17.1
##  2     2   7.4 1083      148 0.014  24.6
##  3     2   7.4 1095       42 0.196  24.6
##  4     2   7.4 283        85 0.135  24.6
##  5     2   7.4 135       107 0.062  24.6
##  6     2   7.4 475       109 0.054  24.6
##  7     2   7.4 113       156 0.014  24.6
##  8     2   7.4 1008      224 0.018  24.6
##  9     2   7.4 1028      293 0.01   24.6
## 10     2   7.4 2001      359 0.004  24.6
## # ... with 172 more rows
  • Menambahkan peubah baru pada data, misalkan disini ditambahkan peubah baru yaitu L.mag
(myMag <- attenu %>% mutate(L.mag = if_else(mag >= mean(mag),"High Risk", "Low Risk")))
## # A tibble: 182 x 6
##    event   mag station  dist accel L.mag    
##    <dbl> <dbl> <fct>   <dbl> <dbl> <chr>    
##  1     1   7   117        12 0.359 High Risk
##  2     2   7.4 1083      148 0.014 High Risk
##  3     2   7.4 1095       42 0.196 High Risk
##  4     2   7.4 283        85 0.135 High Risk
##  5     2   7.4 135       107 0.062 High Risk
##  6     2   7.4 475       109 0.054 High Risk
##  7     2   7.4 113       156 0.014 High Risk
##  8     2   7.4 1008      224 0.018 High Risk
##  9     2   7.4 1028      293 0.01  High Risk
## 10     2   7.4 2001      359 0.004 High Risk
## # ... with 172 more rows

Eksplorasi Data

Disini akan dipraktikkan penggunaan fungsi summarise(), arrange(), filter(), mutate(), atau select() secara bersama-sama:

  • Memilih beberapa peubah (Event Number; Moment Magnitude; Station Number; dan Peak acceleration) dari data attenu dengan hanya memilih peubah Moment Magnitude yang lebih besar dari 6.0. Selanjutnya data diurutkan dari urutan peubah Moment Magnitude paling kecil, kemudian dari urutan peubah Peak acceleration paling besar. Selain itu, ditambahkan peubah baru L.accel yaitu Level of Peak acceleration
(myAttenu <- attenu %>% select(event, mag, station, accel) %>% filter(mag >= 6.0) %>% arrange(mag, desc(accel)) %>% mutate(L.accel = if_else(accel >= mean(accel),"High", "Low")))
## # A tibble: 102 x 5
##    event   mag station accel L.accel
##    <dbl> <dbl> <fct>   <dbl> <chr>  
##  1    15   6   1051    0.11  Low    
##  2    15   6   1292    0.08  Low    
##  3    15   6   1291    0.07  Low    
##  4    15   6   1293    0.04  Low    
##  5     4   6.1 1013    0.509 High   
##  6     4   6.1 1014    0.467 High   
##  7     4   6.1 1438    0.411 High   
##  8     4   6.1 1015    0.279 High   
##  9     4   6.1 1016    0.072 Low    
## 10     4   6.1 1083    0.018 Low    
## # ... with 92 more rows
  • Dari data baru (myAttenu) yang telah dibuat tersebut selanjutnya dihitung jumlah Event Number berdasarkan kategori Level of Peak acceleration nya yang High dan diurutkan totalnya dari yang terbesar
myAttenu %>% filter(L.accel %in% "High") %>% count(event, L.accel) %>% arrange(desc(n))
## # A tibble: 6 x 3
##   event L.accel     n
##   <dbl> <chr>   <int>
## 1    19 High       25
## 2     9 High        6
## 3     4 High        4
## 4     1 High        1
## 5     2 High        1
## 6    12 High        1
  • Dari data baru (myAttenu) yang telah dibuat tersebut juga dihitung rata-rata dari Peak acceleration berdasarkan Level of Peak acceleration-nya
myAttenu %>% group_by(L.accel) %>% summarise(A.accel = mean(accel))
## # A tibble: 2 x 2
##   L.accel A.accel
## * <chr>     <dbl>
## 1 High     0.364 
## 2 Low      0.0656
myAttenu %>% select(event, mag, accel) %>% group_by(mag) %>% summarise(A.accel = mean(accel)) %>% arrange(mag,A.accel)
## # A tibble: 9 x 2
##     mag A.accel
##   <dbl>   <dbl>
## 1   6    0.075 
## 2   6.1  0.197 
## 3   6.2  0.39  
## 4   6.5  0.296 
## 5   6.6  0.0912
## 6   7    0.359 
## 7   7.4  0.0511
## 8   7.6  0.105 
## 9   7.7  0.0433
  • Dari data baru (myAttenu) yang telah dibuat tersebut dihitung juga rata-rata dari Peak acceleration berdasarkan Moment Magnitude-nya dan diurutkan berdasarkan rata-rata Peak acceleration yang terbesar
myAttenu %>% group_by(mag) %>% summarise(A.accel = mean(accel)) %>% arrange(desc(A.accel))
## # A tibble: 9 x 2
##     mag A.accel
##   <dbl>   <dbl>
## 1   6.2  0.39  
## 2   7    0.359 
## 3   6.5  0.296 
## 4   6.1  0.197 
## 5   7.6  0.105 
## 6   6.6  0.0912
## 7   6    0.075 
## 8   7.4  0.0511
## 9   7.7  0.0433

Selain itu, penggunaan fungsi-fungsi tersebut juga bisa digunakan langsung secara bersama-sama seperti berikut:

  • Memilih sebagian dari data, yaitu peubah Moment Magnitude, Station-hypocenter distance, dan Peak acceleration yang dikelompokkan berdasarkan Moment Magnitude serta dihitung rata-rata Station-hypocenter distance dan Peak acceleration-nya. Kemudian diurutkan berdasarkan peubah Moment Magnitude dari nilai terbesar dan hanya diambil Moment Magnitude yang nilainya > 5.0. Selain itu, ditambahkan juga peubah baru L.accel yaitu Level of Peak acceleration
attenu %>% select(mag,dist,accel) %>% group_by(mag) %>% summarise(meanDist=mean(dist),meanAccel=mean(accel))%>% arrange(desc(mag))%>%filter(mag>5.0)%>% mutate(L.accel = if_else(meanAccel >=mean(attenu$accel) ,"High", "Low"))
## # A tibble: 16 x 4
##      mag meanDist meanAccel L.accel
##    <dbl>    <dbl>     <dbl> <chr>  
##  1   7.7   163.      0.0433 Low    
##  2   7.6    50.2     0.105  Low    
##  3   7.4   189.      0.0511 Low    
##  4   7      12       0.359  High   
##  5   6.6    82.3     0.0912 Low    
##  6   6.5    18.1     0.296  High   
##  7   6.2     5       0.39   High   
##  8   6.1    51.8     0.197  High   
##  9   6      25.2     0.075  Low    
## 10   5.8    18.0     0.139  Low    
## 11   5.7    62       0.003  Low    
## 12   5.6    42.7     0.0553 Low    
## 13   5.5    23.8     0.120  Low    
## 14   5.3    30.3     0.0891 Low    
## 15   5.2    11.2     0.110  Low    
## 16   5.1     4.57    0.293  High
  • Memilih sebagian dari data, yaitu peubah Event Number, Moment Magnitude, Station-hypocenter distance, dan Peak acceleration yang dikelompokkan berdasarkan Event Numbe serta dihitung rata-rata Moment Magnitude, Station-hypocenter distance dan Peak acceleration-nya. Kemudian diurutkan berdasarkan peubah Event Number dari nilai terbesar dan hanya diambil Event Number yang lebih dari 10. Selain itu, ditambahkan juga peubah baru L.accel yaitu Level of Peak acceleration
attenu %>% select(event,mag,dist,accel) %>% group_by(event) %>% summarise(meanMag=mean(mag),meanDist=mean(dist),meanAccel=mean(accel))%>% arrange(desc(event))%>%filter(event>10)%>% mutate(L.accel = if_else(meanAccel >=mean(attenu$accel) ,"High", "Low"))
## # A tibble: 13 x 5
##    event meanMag meanDist meanAccel L.accel
##    <dbl>   <dbl>    <dbl>     <dbl> <chr>  
##  1    23     5.3    34.2     0.0823 Low    
##  2    22     5.5    23.8     0.120  Low    
##  3    21     5.8    23.7     0.0826 Low    
##  4    20     5      13       0.163  High   
##  5    19     6.5    18.1     0.296  High   
##  6    18     5.8    14.3     0.175  High   
##  7    17     7.6    50.2     0.105  Low    
##  8    16     5.1     4.57    0.293  High   
##  9    15     6      25.2     0.075  Low    
## 10    14     5.2    11.2     0.110  Low    
## 11    13     5.6    33       0.0805 Low    
## 12    12     6.2     5       0.39   High   
## 13    11     7.7   163.      0.0433 Low