Anda di halaman 1dari 73

Manipulasi Data

Tujuan pembelajaran: memahami dan menerapkan teknik-teknik manipulasi


data meliputi menyaring dan mengurutkan baris, memberikan nama dan
menambahkan kolom, menghitung statistik ringkasan.
Sumber: www.datanovia.com (web dibuat dan dikelola oleh Alboukadel Kassambara)
1
Paket R untuk manipulasi data
▪ Teknik manipulasi data meliputi:
▪ Menyaring dan mengurutkan baris
▪ Memberikan dan menambahkan kolom
▪ Menghitung statistik ringkasan
▪ Paket R untuk manipulasi data adalah paket dplyr, yang memuat fungsi-fungsi R
yang penting untuk memanipulasi data lebih mudah.
▪ Install paket tidyverse, paket ini memuat paket dplyr (untuk manipulasi data), paket
readr (untuk membaca data lebih mudah), paket tidyr (untuk mentransformasi data),
paket ggplot2 (untuk memvisualisasikan dataset).
▪ Panggil library(tidyverse).

2
Demo datasets
▪ Data iris adalah data built-in di R, selanjutnya dikonversi sebagai data frame tibble
untuk memudahkan analisis data.
> library("tidyverse")
> data("iris")
> my_data <- as_tibble(iris)
> my_data
# A tibble: 150 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# ... with 140 more rows

3
Tipe kolom
▪ int: integers
▪ dbl: double (real numbers),
▪ chr: character vectors, strings, texts
▪ fctr: factor,
▪ dttm: date-times (date + time)
▪ lgl: logical (TRUE or FALSE)
▪ date: dates

4
Fungsi-fungsi manipulasi data
▪ Ada 8 fungsi-fungsi manipulasi data fundamental yang akan seringkali digunakan dalam
manipulasi data.
▪ Fungsi-fungsi yang ada di paket dplyr adalah
▪ filter(): memilih baris (pengamatan / sampel) berdasarkan nilainya.
▪ distinct(): menghapus baris duplikat.
▪ arrange(): menyusun ulang baris.
▪ select(): memilih kolom (variabel) dengan namanya.
▪ rename(): mengganti nama kolom.
▪ mutate() dan transmutate(): menambahkan / membuat variabel baru.
▪ summarise(): mengitung ringkasan statistik (mis., menghitung rata-rata atau
jumlah)

5
Memilih kolom dataframe dalam R
Tujuan pembelajaran: memahami dan mengaplikasikan cara memilih kolom
data frame dengan nama dan posisi serta cara menghapus kolom dari data
frame.

6
Memilih kolom data frame dalam R
▪ Fungsi-fungsi yang digunakan adalah
▪ pull(): mengekstrak nilai kolom sebagai
vektor. Kolom yang diminati dapat ditentukan
berdasarkan nama atau indeks.
▪ select(): mengekstrak satu atau beberapa
kolom sebagai tabel data, serta dapat juga untuk
menghapus kolom dari bingkai data.
▪ select_if(): memilih kolom berdasarkan
kondisi tertentu. Seseorang dapat menggunakan
fungsi ini untuk, misalnya, memilih kolom yang
memiliki tipe numerik.
▪ Fungsi pembantu seperti begin_with(),
ends_with(), contains(), matches(),
one_of(): memilih kolom / variabel
berdasarkan namanya

7
Demo dataset
Dataset iris adalah dataset built-in di R. Data ini selanjutnya dikonversi dalam data
frame tibble untuk memudahkan analisis data.

> library("tidyverse")
> data("iris")
> my_data <- as_tibble(iris)
> my_data
# A tibble: 150 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# ... with 140 more rows

8
Mengekstrak nilai-nilai suatu kolom sebagai suatu vektor
> my_data %>% pull(Species)
[1] setosa setosa setosa setosa setosa
[6] setosa setosa setosa setosa setosa
[11] setosa setosa setosa setosa setosa
[16] setosa setosa setosa setosa setosa
[21] setosa setosa setosa setosa setosa
[26] setosa setosa setosa setosa setosa
[31] setosa setosa setosa setosa setosa
[36] setosa setosa setosa setosa setosa
[41] setosa setosa setosa setosa setosa
[46] setosa setosa setosa setosa setosa
[51] versicolor versicolor versicolor versicolor versicolor
[56] versicolor versicolor versicolor versicolor versicolor
[61] versicolor versicolor versicolor versicolor versicolor
[66] versicolor versicolor versicolor versicolor versicolor
[71] versicolor versicolor versicolor versicolor versicolor
[76] versicolor versicolor versicolor versicolor versicolor
[81] versicolor versicolor versicolor versicolor versicolor
[86] versicolor versicolor versicolor versicolor versicolor
[91] versicolor versicolor versicolor versicolor versicolor
[96] versicolor versicolor versicolor versicolor versicolor
[101] virginica virginica virginica virginica virginica
[106] virginica virginica virginica virginica virginica
[111] virginica virginica virginica virginica virginica
[116] virginica virginica virginica virginica virginica
[121] virginica virginica virginica virginica virginica
[126] virginica virginica virginica virginica virginica
[131] virginica virginica virginica virginica virginica
[136] virginica virginica virginica virginica virginica
[141] virginica virginica virginica virginica virginica
[146] virginica virginica virginica virginica virginica
Levels: setosa versicolor virginica

9
Mengekstrak kolom-kolom sebagai suatu tabel data
Memilih kolom berdasarkan posisi
Memilih kolom 1 sampai kolom 3 Memilih kolom 1 dan 2
> my_data %>% select(1:3) > my_data %>% select(1, 3)
# A tibble: 150 x 3 # A tibble: 150 x 2
Sepal.Length Sepal.Width Petal.Length Sepal.Length Petal.Length
<dbl> <dbl> <dbl> <dbl> <dbl>
1 5.1 3.5 1.4 1 5.1 1.4
2 4.9 3 1.4 2 4.9 1.4
3 4.7 3.2 1.3 3 4.7 1.3
4 4.6 3.1 1.5 4 4.6 1.5
5 5 3.6 1.4 5 5 1.4
6 5.4 3.9 1.7 6 5.4 1.7
7 4.6 3.4 1.4 7 4.6 1.4
8 5 3.4 1.5 8 5 1.5
9 4.4 2.9 1.4 9 4.4 1.4
10 4.9 3.1 1.5 10 4.9 1.5
# ... with 140 more rows # ... with 140 more rows

10
Memilih kolom berdasarkan nama

Memilih kolom dengan nama variabel Memilih semua kolom dari Sepal.Length
Sepal.Length dan Petal.Length sampai Petal.Length
> my_data %>% select(Sepal.Length, Petal.Length) > my_data %>% select(Sepal.Length:Petal.Length)
# A tibble: 150 x 2 # A tibble: 150 x 3
Sepal.Length Petal.Length Sepal.Length Sepal.Width Petal.Length
<dbl> <dbl> <dbl> <dbl> <dbl>
1 5.1 1.4 1 5.1 3.5 1.4
2 4.9 1.4 2 4.9 3 1.4
3 4.7 1.3 3 4.7 3.2 1.3
4 4.6 1.5 4 4.6 3.1 1.5
5 5 1.4 5 5 3.6 1.4
6 5.4 1.7 6 5.4 3.9 1.7
7 4.6 1.4 7 4.6 3.4 1.4
8 5 1.5 8 5 3.4 1.5
9 4.4 1.4 9 4.4 2.9 1.4
10 4.9 1.5 10 4.9 3.1 1.5
# ... with 140 more rows # ... with 140 more rows

11
Beberapa fungsi yang dapat digunakan dalam fungsi select()
Memilih kolom yang namanya dimulai dengan “Petal”
> # Select column whose name starts with "Petal"
> my_data %>% select(starts_with("Petal"))
# A tibble: 150 x 2
Petal.Length Petal.Width
<dbl> <dbl>
1 1.4 0.2
2 1.4 0.2
3 1.3 0.2
4 1.5 0.2
5 1.4 0.2
6 1.7 0.4
7 1.4 0.3
8 1.5 0.2
9 1.4 0.2
10 1.5 0.1
# ... with 140 more rows

12
Memilih kolom yang namanya diakhiri dengan “Width”

> # Select column whose name ends with "Width"


> my_data %>% select(ends_with("Width"))
# A tibble: 150 x 2
Sepal.Width Petal.Width
<dbl> <dbl>
1 3.5 0.2
2 3 0.2
3 3.2 0.2
4 3.1 0.2
5 3.6 0.2
6 3.9 0.4
7 3.4 0.3
8 3.4 0.2
9 2.9 0.2
10 3.1 0.1
# ... with 140 more rows

13
Memilih kolom yang namanya memuat “etal”
> # Select columns whose names contains "etal"
> my_data %>% select(contains("etal"))
# A tibble: 150 x 2
Petal.Length Petal.Width
<dbl> <dbl>
1 1.4 0.2
2 1.4 0.2
3 1.3 0.2
4 1.5 0.2
5 1.4 0.2
6 1.7 0.4
7 1.4 0.3
8 1.5 0.2
9 1.4 0.2
10 1.5 0.1
# ... with 140 more rows

14
Memilih kolom yang namanya bersesuaian dengan suatu ekspresi

> # Select columns whose name maches a regular expression


> my_data %>% select(matches(".t."))
# A tibble: 150 x 4
Sepal.Length Sepal.Width Petal.Length Petal.Width
<dbl> <dbl> <dbl> <dbl>
1 5.1 3.5 1.4 0.2
2 4.9 3 1.4 0.2
3 4.7 3.2 1.3 0.2
4 4.6 3.1 1.5 0.2
5 5 3.6 1.4 0.2
6 5.4 3.9 1.7 0.4
7 4.6 3.4 1.4 0.3
8 5 3.4 1.5 0.2
9 4.4 2.9 1.4 0.2
10 4.9 3.1 1.5 0.1
# ... with 140 more rows

15
Memilih kolom-kolom dengan nama variabelnya

> # selects variables provided in a character vector


> my_data %>% select(one_of(c("Sepal.Length", "Petal.Length")))
# A tibble: 150 x 2
Sepal.Length Petal.Length
<dbl> <dbl>
1 5.1 1.4
2 4.9 1.4
3 4.7 1.3
4 4.6 1.5
5 5 1.4
6 5.4 1.7
7 4.6 1.4
8 5 1.5
9 4.4 1.4
10 4.9 1.5
# ... with 140 more rows

16
Memilih kolom berdasarkan suatu kondisi
▪ Suatu fungsi dapat diaplikasikan untuk memilih kolom sesuai dengan kondisi tertentu,
misal memilih kolom yang tipe variabelnya berupa numerik.
> my_data %>% select_if(is.numeric)
# A tibble: 150 x 4
Sepal.Length Sepal.Width Petal.Length Petal.Width
<dbl> <dbl> <dbl> <dbl>
1 5.1 3.5 1.4 0.2
2 4.9 3 1.4 0.2
3 4.7 3.2 1.3 0.2
4 4.6 3.1 1.5 0.2
5 5 3.6 1.4 0.2
6 5.4 3.9 1.7 0.4
7 4.6 3.4 1.4 0.3
8 5 3.4 1.5 0.2
9 4.4 2.9 1.4 0.2
10 4.9 3.1 1.5 0.1
# ... with 140 more rows

17
Menghapus kolom
▪ Menghapus suatu kolom dari suatu dataframe sangat mudah yaitu memberikan tanda
minus pada nama variabel yang ingin dihapus.
▪ Menghapus kolom Sepal.Length dan Petal.Length

> my_data %>% select(-Sepal.Length, -Petal.Length)


# A tibble: 150 x 3
Sepal.Width Petal.Width Species
<dbl> <dbl> <fct>
1 3.5 0.2 setosa
2 3 0.2 setosa
3 3.2 0.2 setosa
4 3.1 0.2 setosa
5 3.6 0.2 setosa
6 3.9 0.4 setosa
7 3.4 0.3 setosa
8 3.4 0.2 setosa
9 2.9 0.2 setosa
10 3.1 0.1 setosa
# ... with 140 more rows

18
Menghapus semua kolom dari Sepal.Length sampai Petal.Length

> my_data %>% select(-


(Sepal.Length:Petal.Length))
# A tibble: 150 x 2
Petal.Width Species
<dbl> <fct>
1 0.2 setosa
2 0.2 setosa
3 0.2 setosa
4 0.2 setosa
5 0.2 setosa
6 0.4 setosa
7 0.3 setosa
8 0.2 setosa
9 0.2 setosa
10 0.1 setosa
# ... with 140 more rows

19
Menghapus semua kolom yang namanya dimulai dengan “Petal”

> my_data %>% select(-starts_with("Petal"))


# A tibble: 150 x 3
Sepal.Length Sepal.Width Species
<dbl> <dbl> <fct>
1 5.1 3.5 setosa
2 4.9 3 setosa
3 4.7 3.2 setosa
4 4.6 3.1 setosa
5 5 3.6 setosa
6 5.4 3.9 setosa
7 4.6 3.4 setosa
8 5 3.4 setosa
9 4.4 2.9 setosa
10 4.9 3.1 setosa
# ... with 140 more rows

20
Menghapus kolom berdasarkan posisi
# Drop column 1
my_data %>% select(-1)

# Drop columns 1 to 3
my_data %>% select(-(1:3))

# Drop columns 1 and 3 but not 2


my_data %>% select(-1, -3)

21
Subset baris data frame
dalam R
Anda akan belajar cara mensubset atau mengekstrak baris dataframe
berdasarkan kriteria tertentu serta menghapus nilai hilang

22
Fungsi-fungsi yang dipelajari dari paket dplyr
▪ slice(): mengekstrak baris berdasarkan posisi
▪ filter(): mengekstrak baris yang memenuhi kriteria logis tertentu. Misalnya
iris%>% filter(Sepal.Length> 6).
▪ filter_all(), filter_if() dan filter_at(): filter baris dalam pilihan
variabel. Fungsi-fungsi ini mereplikasi kriteria logis atas semua variabel atau
menyeleksi variabel.
▪ sample_n(): memilih n baris secara acak
▪ sample_frac(): memilih secara acak sebagian kecil dari baris
▪ top_n(): memilih n baris atas yang dipesan oleh variabel

23
24
Demo dataset
▪ Panggil:
library(tidyverse)
▪ Dataset yang digunakan adalah dataset iris
> library(tidyverse)
> data("iris")
> my_data <- as_tibble(iris)
> my_data
# A tibble: 150 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# ... with 140 more rows

25
Mengekstrak baris berdasarkan posisi
▪ Fungsi R dalam paket dplyr yang digunakan: slice()

> my_data %>% slice(1:6)


# A tibble: 6 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa

26
Memfilter baris-baris dengan kriteria logis
▪ Fungsi R dari paket dplyr yang digunakan: filter()
▪ Operator logis yang ada dalam R adalah
▪ Perbandingan logis
▪ <: kurang dari
▪ >: lebih besar dari
▪ <=: kurang dari atau sama dengan
▪ > =: untuk lebih dari atau sama dengan
▪ ==: untuk sama satu sama lain
▪ ! =: tidak sama satu sama lain
▪ %in%: keanggotaan grup. Misalnya, “value%in% c(2, 3)” berarti bahwa nilai dapat
berupa 2 atau 3.
▪ is.na (): adalah NA
▪ ! is.na (): bukan NA.
▪ Operator logis
▪ value == 2 | 3: berarti nilai sama dengan 2 atau (|) 3. value %in% c(2,3) adalah
jalan pintas yang setara dengan value == 2 | 3.
▪ &: berarti dan. Misalnya jenis kelamin == "perempuan" & usia> 25

27
Satu kolom berdasar kriteria: mengekstrak baris yang Sepal.Length > 7
> my_data %>% filter(Sepal.Length > 7)
# A tibble: 12 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 7.1 3 5.9 2.1 virginica
2 7.6 3 6.6 2.1 virginica
3 7.3 2.9 6.3 1.8 virginica
4 7.2 3.6 6.1 2.5 virginica
5 7.7 3.8 6.7 2.2 virginica
6 7.7 2.6 6.9 2.3 virginica
7 7.7 2.8 6.7 2 virginica
8 7.2 3.2 6 1.8 virginica
9 7.2 3 5.8 1.6 virginica
10 7.4 2.8 6.1 1.9 virginica
11 7.9 3.8 6.4 2 virginica
12 7.7 3 6.1 2.3 virginica

28
Beberapa kolom berdasarkan kriteria: mengekstrak baris-baris dengan
Sepal.Length > 6.7 dan Sepal.Width  3

> my_data %>% filter(Sepal.Length > 6.7, Sepal.Width <= 3)


# A tibble: 10 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 6.8 2.8 4.8 1.4
versicolor
2 7.1 3 5.9 2.1 virginica
3 7.6 3 6.6 2.1 virginica
4 7.3 2.9 6.3 1.8 virginica
5 6.8 3 5.5 2.1 virginica
6 7.7 2.6 6.9 2.3 virginica
7 7.7 2.8 6.7 2 virginica
8 7.2 3 5.8 1.6 virginica
9 7.4 2.8 6.1 1.9 virginica
10 7.7 3 6.1 2.3 virginica

29
Uji bagi kesamaan (==): mengekstrak baris-baris dengan
Sepal.Length > 6.5 dan Species = “versicolor”

> my_data %>% filter(Sepal.Length > 6.7, Species == "versicolor")


# A tibble: 3 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 7 3.2 4.7 1.4 versicolor
2 6.9 3.1 4.9 1.5 versicolor
3 6.8 2.8 4.8 1.4 versicolor

30
Menggunakan operator OR (|): mengekstrak baris-baris dengan
Sepal.Length > 6.5 dan (Species = “versicolor” atau Species = “virginica”)
> my_data %>% filter(
Sepal.Length > 6.7,
Species == "versicolor" | Species == "virginica"
)
# A tibble: 20 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 7 3.2 4.7 1.4 versicolor
2 6.9 3.1 4.9 1.5 versicolor
3 6.8 2.8 4.8 1.4 versicolor
4 7.1 3 5.9 2.1 virginica
5 7.6 3 6.6 2.1 virginica
6 7.3 2.9 6.3 1.8 virginica
7 7.2 3.6 6.1 2.5 virginica
8 6.8 3 5.5 2.1 virginica
9 7.7 3.8 6.7 2.2 virginica
10 7.7 2.6 6.9 2.3 virginica
11 6.9 3.2 5.7 2.3 virginica
12 7.7 2.8 6.7 2 virginica
13 7.2 3.2 6 1.8 virginica
14 7.2 3 5.8 1.6 virginica
15 7.4 2.8 6.1 1.9 virginica
16 7.9 3.8 6.4 2 virginica
17 7.7 3 6.1 2.3 virginica
18 6.9 3.1 5.4 2.1 virginica
19 6.9 3.1 5.1 2.3 virginica
20 6.8 3.2 5.9 2.3 virginica
31
Atau, ekuivalen, menggunakan shortcut (operator %in%)
> my_data %>% filter(
Sepal.Length > 6.7,
Species %in% c("versicolor", "virginica" )
)
# A tibble: 20 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 7 3.2 4.7 1.4 versicolor
2 6.9 3.1 4.9 1.5 versicolor
3 6.8 2.8 4.8 1.4 versicolor
4 7.1 3 5.9 2.1 virginica
5 7.6 3 6.6 2.1 virginica
6 7.3 2.9 6.3 1.8 virginica
7 7.2 3.6 6.1 2.5 virginica
8 6.8 3 5.5 2.1 virginica
9 7.7 3.8 6.7 2.2 virginica
10 7.7 2.6 6.9 2.3 virginica
11 6.9 3.2 5.7 2.3 virginica
12 7.7 2.8 6.7 2 virginica
13 7.2 3.2 6 1.8 virginica
14 7.2 3 5.8 1.6 virginica
15 7.4 2.8 6.1 1.9 virginica
16 7.9 3.8 6.4 2 virginica
17 7.7 3 6.1 2.3 virginica
18 6.9 3.1 5.4 2.1 virginica
19 6.9 3.1 5.1 2.3 virginica
20 6.8 3.2 5.9 2.3 virginica

32
Memfilter baris-baris dalam memilih variabel-variabel
▪ Bagian ini menyajikan 3 fungsi - filter_all(), filter_if() dan filter_at() - untuk
memfilter baris dalam pilihan variabel.
▪ Fungsi-fungsi ini mereplikasi kriteria logis atas semua variabel atau pemilihan variabel.
▪ Buat dataset demo baru (my_data) dengan menghapus kolom grup “Species”:
my_data2 <- my_data %>% select(-Species)
▪ Memilih baris-baris dimana semua variabel lebih dari 2.4:
> my_data2 %>% filter_all(all_vars(.> 2.4))
# A tibble: 3 x 4
Sepal.Length Sepal.Width Petal.Length Petal.Width
<dbl> <dbl> <dbl> <dbl>
1 6.3 3.3 6 2.5
2 7.2 3.6 6.1 2.5
3 6.7 3.3 5.7 2.5

33
▪ Memilih baris-baris ketika ada variabel yang nilainya lebih dari 2.4

> my_data2 %>% filter_all(any_vars(.> 2.4))


# A tibble: 150 x 4
Sepal.Length Sepal.Width Petal.Length Petal.Width
<dbl> <dbl> <dbl> <dbl>
1 5.1 3.5 1.4 0.2
2 4.9 3 1.4 0.2
3 4.7 3.2 1.3 0.2
4 4.6 3.1 1.5 0.2
5 5 3.6 1.4 0.2
6 5.4 3.9 1.7 0.4
7 4.6 3.4 1.4 0.3
8 5 3.4 1.5 0.2
9 4.4 2.9 1.4 0.2
10 4.9 3.1 1.5 0.1
# ... with 140 more rows

34
Variasikan pemilihan kolom untuk menerapkan kriteria penyaringan. filter_at()
membutuhkan spesifikasi vars(). Kode R berikut menerapkan kriteria pemfilteran pada
kolom Sepal.Length dan Sepal.Width:

> my_data2 %>% filter_at(vars(starts_with("Sepal")), any_vars(. > 2.4))


# A tibble: 150 x 4
Sepal.Length Sepal.Width Petal.Length Petal.Width
<dbl> <dbl> <dbl> <dbl>
1 5.1 3.5 1.4 0.2
2 4.9 3 1.4 0.2
3 4.7 3.2 1.3 0.2
4 4.6 3.1 1.5 0.2
5 5 3.6 1.4 0.2
6 5.4 3.9 1.7 0.4
7 4.6 3.4 1.4 0.3
8 5 3.4 1.5 0.2
9 4.4 2.9 1.4 0.2
10 4.9 3.1 1.5 0.1
# ... with 140 more rows

35
Menghilangkan nilai-nilai hilang
▪ Buat data frame dengan nilai yang hilang. Dalam R, NA (Not Available) digunakan
untuk mewakili nilai yang hilang:

> # Create a data frame with missing data


> friends_data <- data_frame(
name = c("A", "B", "C", "D"),
age = c(27, 25, 29, 26),
height = c(180, NA, NA, 169),
married = c("yes", "yes", "no", "no")
)
Warning message:
`data_frame()` is deprecated, use `tibble()`.
This warning is displayed once per session.
> # Print
> friends_data
# A tibble: 4 x 4
name age height married
<chr> <dbl> <dbl> <chr>
1 A 27 180 yes
2 B 25 NA yes
3 C 29 NA no
4 D 26 169 no

36
▪ Mengekstrak baris-baris dimana ada nilai variabel height adalah NA

> friends_data %>% filter(is.na(height))


# A tibble: 2 x 4
name age height married
<chr> <dbl> <dbl> <chr>
1 B 25 NA yes
2 C 29 NA no

▪ Mengeluarkan baris-baris dimana ada nilai variabel height adalah NA

> friends_data %>% filter(!is.na(height))


# A tibble: 2 x 4
name age height married
<chr> <dbl> <dbl> <chr>
1 A 27 180 yes
2 D 26 169 no

37
Memilih baris-baris secara acak dari suatu dataframe
▪ Dimungkinkan untuk memilih n baris acak dengan fungsi sample_n() atau fraksi acak dari
baris dengan sample_frac(). Langkah pertama menggunakan fungsi set.seed() untuk
memulai mesin generator angka acak. Hal ini penting bagi pengguna untuk mereproduksi analisis.

> set.seed(1234)
> # Extract 5 random rows without replacement
> my_data %>% sample_n(5, replace = FALSE)
# A tibble: 5 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.3 setosa > # Extract 5% of rows, randomly without replacement
2 5.8 2.6 4 1.2 versicolor > my_data %>% sample_frac(0.05, replace = FALSE)
3 5.5 2.6 4.4 1.2 versicolor # A tibble: 8 x 5
4 6.1 3 4.6 1.4 versicolor Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5 7.2 3.2 6 1.8 virginica <dbl> <dbl> <dbl> <dbl> <fct>
> 1 5.7 2.9 4.2 1.3 versicolor
2 4.9 3 1.4 0.2 setosa
3 4.9 3.1 1.5 0.2 setosa
4 6.2 2.9 4.3 1.3 versicolor
5 6.6 3 4.4 1.4 versicolor
6 6.3 3.3 6 2.5 virginica
7 6 2.9 4.5 1.5 versicolor
8 5 3.5 1.3 0.3 setosa

38
Memilih n baris terurut atas berdasarkan suatu variabel
▪ Memilih 5 baris terurut atas berdasarkan Sepal.Length

> my_data %>% top_n(5, Sepal.Length)


# A tibble: 5 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 7.7 3.8 6.7 2.2 virginica
2 7.7 2.6 6.9 2.3 virginica
3 7.7 2.8 6.7 2 virginica
4 7.9 3.8 6.4 2 virginica
5 7.7 3 6.1 2.3 virginica

39
▪ Grup berdasarkan kolom Species dan pilih 5 teratas dari masing-masing grup yang
diurutkan berdasarkan Sepal.Length
> my_data %>%
group_by(Species) %>%
top_n(5, Sepal.Length)
# A tibble: 16 x 5
# Groups: Species [3]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.8 4 1.2 0.2 setosa
2 5.7 4.4 1.5 0.4 setosa
3 5.7 3.8 1.7 0.3 setosa
4 5.5 4.2 1.4 0.2 setosa
5 5.5 3.5 1.3 0.2 setosa
6 7 3.2 4.7 1.4 versicolor
7 6.9 3.1 4.9 1.5 versicolor
8 6.7 3.1 4.4 1.4 versicolor
9 6.8 2.8 4.8 1.4 versicolor
10 6.7 3 5 1.7 versicolor
11 6.7 3.1 4.7 1.5 versicolor
12 7.7 3.8 6.7 2.2 virginica
13 7.7 2.6 6.9 2.3 virginica
14 7.7 2.8 6.7 2 virginica
15 7.9 3.8 6.4 2 virginica
16 7.7 3 6.1 2.3 virginica

40
Ringkasan
Dalam materi ini telah dipelajari bagaimana memfilter suatu baris-baris suatu dataframe
menggunakan paket dplyr:
▪ filter baris dengan kriteria logis: my_data%>% filter(Sepal.Length> 7)
▪ Pilih n baris acak: my_data%>% sample_n(10)
▪ Pilih sebagian kecil baris: my_data%>% sample_frac(10)
▪ Pilih n baris atas dengan nilai: my_data%>% top_n(10, Sepal.Length)

41
Mengidentifikasi dan
menghapus data duplikat
dalam R
Tujuan pembelajaran: menggunakan fungsi-fungsi dasar R dan dplyr untuk
mengidentifikasi dan membuat data duplikasi dalam R

42
Fungsi dasar R vs fungsi di dplyr
Fungsi dasar R
▪ duplicated(): untuk
mengidentifikasi elemen yang
digandakan
▪ unique(): untuk mengekstraksi
elemen unik

Fungsi di dplyr
▪ distinct() : untuk menghapus
baris duplikat dalam bingkai data.

Panggil paket tidyverse yang memuat dplyr:


library(tidyverse)

43
Mencari dan membuang elemen-elemen duplikasi
▪ Dari dataset iris ingin menghapus baris duplikat dari dataframe berdasarkan nilai
kolom, sebagai berikut:
> # Remove duplicates based on Sepal.Width columns
> my_data[!duplicated(my_data$Sepal.Width), ]
# A tibble: 23 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 4.4 2.9 1.4 0.2 setosa
9 5.4 3.7 1.5 0.2 setosa
10 5.8 4 1.2 0.2 setosa
# ... with 13 more rows

44
▪ Dari data iris ingin menerapkan fungsi unique() pada dataframe, untuk
menghapus baris yang digandakan sebagai berikut:

> unique(my_data)
# A tibble: 149 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# ... with 139 more rows

45
Hapus duplikat baris dalam data frame dengan fungsi distinct() dari
paket dplyr

Fungsi distinct() dari paket dplyr dapat digunakan untuk mempertahankan hanya
baris unik / berbeda dari data frame. Jika ada baris duplikat, hanya baris pertama yang
dipertahankan. Ini adalah versi efisien dari fungsi dasar R yang unique().

Hapus baris duplikat berdasarkan semua kolom:


> library(dplyr)
> my_data %>% distinct()
# A tibble: 149 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# ... with 139 more rows

46
Hapus duplikat baris berdasarkan kolom tertentu (variabel)

> # Remove duplicated rows based on Sepal.Length


> my_data %>% distinct(Sepal.Length, .keep_all = TRUE)
# A tibble: 35 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.4 2.9 1.4 0.2 setosa
8 4.8 3.4 1.6 0.2 setosa
9 4.3 3 1.1 0.1 setosa
10 5.8 4 1.2 0.2 setosa
# ... with 25 more rows

47
Hapus duplikat baris berdasarkan Sepal.Length dan Petal.Width

> # Remove duplicated rows based on Sepal.Length and Petal.Width


> my_data %>% distinct(Sepal.Length, Petal.Width, .keep_all = TRUE)
# A tibble: 110 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 4.4 2.9 1.4 0.2 setosa
9 4.9 3.1 1.5 0.1 setosa
10 5.4 3.7 1.5 0.2 setosa
# ... with 100 more rows

48
Ringkasan
Fungsi-fungsi kunci untuk mengidentifikasi dan menghapus data duplikat:
▪ Hapus duplikat baris berdasarkan pada satu atau lebih nilai kolom:
my_data%>% dplyr :: distinct(Sepal.Length)
▪ Fungsi dasar R untuk mengekstrak elemen unik dari vektor dan data frame:
unique(my_data)
▪ Fungsi dasar R untuk menentukan elemen duplikat:
duplicated(my_data)

49
Susun ulang baris data frame
dalam R
Tujuan pembelajaran: mengurutkan suatu data frame menggunakan fungsi-
fungsi dari paket dplyr

50
Mengurutkan baris
Pada materi ini Anda akan belajar cara
mengatur ulang (mis., mengurutkan)
baris, dalam tabel data dengan nilai satu
atau beberapa kolom (mis., variabel).
Sehingga secara mudah dalam:
▪ mengurutkan baris data frame dalam
urutan menaik (dari rendah ke tinggi)
menggunakan fungsi R arrange()
dari paket dplyr
▪ mengurutkan baris dalam urutan
menurun (dari tinggi ke rendah)
menggunakan arrange() bersama
dengan fungsi desc() dari paket dplyr
Panggil paket tidyverse yang memuat dplyr:
library(tidyverse)

51
Mengurutkan baris berdasarkan kolom dalam urutan naik
▪ Dari data iris ingin mengurutkan baris berdasarkan Sepal.Length dalam urutan naik

> my_data %>% arrange(Sepal.Length)


# A tibble: 150 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 4.3 3 1.1 0.1 setosa
2 4.4 2.9 1.4 0.2 setosa
3 4.4 3 1.3 0.2 setosa
4 4.4 3.2 1.3 0.2 setosa
5 4.5 2.3 1.3 0.3 setosa
6 4.6 3.1 1.5 0.2 setosa
7 4.6 3.4 1.4 0.3 setosa
8 4.6 3.6 1 0.2 setosa
9 4.6 3.2 1.4 0.2 setosa
10 4.7 3.2 1.3 0.2 setosa
# ... with 140 more rows

52
Mengurutkan baris berdasarkan kolom dalam urutan turun
▪ Dari data iris ingin mengurutkan baris berdasarkan Sepal.Length dalam urutan turun

> my_data %>% arrange(desc(Sepal.Length))


# A tibble: 150 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 7.9 3.8 6.4 2 virginica
2 7.7 3.8 6.7 2.2 virginica
3 7.7 2.6 6.9 2.3 virginica
4 7.7 2.8 6.7 2 virginica
5 7.7 3 6.1 2.3 virginica
6 7.6 3 6.6 2.1 virginica
7 7.4 2.8 6.1 1.9 virginica
8 7.3 2.9 6.3 1.8 virginica
9 7.2 3.6 6.1 2.5 virginica
10 7.2 3.2 6 1.8 virginica
# ... with 140 more rows

53
Mengurutkan baris berdasarkan kolom dalam urutan turun
▪ Selain menggunakan fungsi desc(), dapat dengan menambahkan variabel
pengurutan dengan tanda minus dalam menunjukkan urutan menurun, sebagai
berikut.
> arrange(my_data, -Sepal.Length)
# A tibble: 150 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 7.9 3.8 6.4 2 virginica
2 7.7 3.8 6.7 2.2 virginica
3 7.7 2.6 6.9 2.3 virginica
4 7.7 2.8 6.7 2 virginica
5 7.7 3 6.1 2.3 virginica
6 7.6 3 6.6 2.1 virginica
7 7.4 2.8 6.1 1.9 virginica
8 7.3 2.9 6.3 1.8 virginica
9 7.2 3.6 6.1 2.5 virginica
10 7.2 3.2 6 1.8 virginica
# ... with 140 more rows

54
Susun ulang baris dengan beberapa variabel: Sepal.Length dan Sepal.width

▪ Jika data memuat nilai-nilai hilang maka akan ditampilkan pada bagian akhir.

> my_data %>% arrange(Sepal.Length, Sepal.Width)


# A tibble: 150 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 4.3 3 1.1 0.1 setosa
2 4.4 2.9 1.4 0.2 setosa
3 4.4 3 1.3 0.2 setosa
4 4.4 3.2 1.3 0.2 setosa
5 4.5 2.3 1.3 0.3 setosa
6 4.6 3.1 1.5 0.2 setosa
7 4.6 3.2 1.4 0.2 setosa
8 4.6 3.4 1.4 0.3 setosa
9 4.6 3.6 1 0.2 setosa
10 4.7 3.2 1.3 0.2 setosa
# ... with 140 more rows

55
Ganti nama kolom data frame
dalam R
Tujuan pembelajaran: memberikan nama kolom yang baru dari suatu data
frame dalam R

56
Memberikan nama baru bagi kolom dari suatu data frame dalam R
▪ Fungsi rename() dalam paket dplyr dapat digunakan untuk memberikan nama baru secara
mudah dari kolom-kolom dalam suatu data frame.
▪ Panggil paket tidyverse yang memuat dplyr:
library(tidyverse)
▪ Dari data iris ingin mengganti nama kolom Sepal.Length menjadi sepal_length dan
Sepal.Width mengganti sepal_width:
> my_data %>%
+ rename(
+ sepal_length = Sepal.Length,
+ sepal_width = Sepal.Width
+ )
# A tibble: 150 x 5
sepal_length sepal_width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# ... with 140 more rows
57
Mengganti nama kolom dengan fungsi dasar R

Penggantian nama kolom Sepal.Length menjadi sepal_length, prosedurnya


adalah sebagai berikut:
▪ Dapatkan nama kolom menggunakan fungsi names() atau colnames()
▪ Ubah nama kolom di mana nama = Sepal.Length

58
Fungsi names() atau colnames()
> # get column names
> colnames(my_data)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
[5] "Species"
> # get column names
> colnames(my_data)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
[5] "Species"
> # Rename column where names is "Sepal.Length"
> names(my_data)[names(my_data) == "Sepal.Length"] <- "sepal_length"
> names(my_data)[names(my_data) == "Sepal.Width"] <- "sepal_width"
> my_data
# A tibble: 150 x 5
sepal_length sepal_width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# ... with 140 more rows

59
Fungsi names()
> names(my_data)[1] <- "sepal_length"
> names(my_data)[2] <- "sepal_width"
> my_data
# A tibble: 150 x 5
sepal_length sepal_width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# ... with 140 more rows

60
Hitung dan tambahkan variabel baru ke
data frame dalam R
Tujuan pembelajaran: menghitung dan menambahkan variabel baru ke suatu
data frame dalam R

61
Menghitung dan menambahkan variabel-variabel baru ke suatu data
frame dalam R

Fungsi-fungsi dalam paket dplyr yang dapat digunakan adalah


▪ mutate(): menghitung dan menambahkan variabel baru ke dalam tabel data. Ini
mempertahankan variabel yang ada.
▪ transmutate(): hitung kolom baru tetapi letakkan variabel yang ada.

Ada tiga variansi dari mutate() dan transmutate() untuk memodifikasi


beberapa kolom dalam data frame:
▪ mutate_all()/transmutate_all(): menerapkan fungsi ke setiap kolom
dalam data frame.
▪ mutate_at()/transmutate_at(): menerapkan fungsi ke kolom tertentu yang
dipilih dengan vektor karakter
▪ mutate_if()/transmutate_if(): menerapkan fungsi ke kolom yang dipilih
dengan fungsi predikat yang mengembalikan TRUE.

62
mutate: Tambahkan variabel baru dengan mempertahankan yang sudah ada
Dari dataset iris, tambahkan kolom baru (sepal_by_petal_ *) dengan mempertahankan
yang sudah ada:
> library("tidyverse")
> data("iris")
> my_data <- as_tibble(iris)
> my_data %>%
+ mutate(sepal_by_petal_l = Sepal.Length/Petal.Length)
# A tibble: 150 x 6
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# ... with 140 more rows, and 1 more variable:
# sepal_by_petal_l <dbl>
63
transmute: buat variabel baru dengan menghapus yang sudah ada
Dari dataset iris, tambahkan kolom baru (sepal_by_petal_ *) dengan menghapus yang
sudah ada.

> my_data %>%


transmute(
sepal_by_petal_l = Sepal.Length/Petal.Length,
sepal_by_petal_w = Sepal.Width/Petal.Width
)
# A tibble: 150 x 2
sepal_by_petal_l sepal_by_petal_w
<dbl> <dbl>
1 3.64 17.5
2 3.5 15
3 3.62 16
4 3.07 15.5
5 3.57 18
6 3.18 9.75
7 3.29 11.3
8 3.33 17
9 3.14 14.5
10 3.27 31
# ... with 140 more rows

64
Memodifikasi beberapa kolom
▪ Buat my_data2 yang merupakan dataset iris yang memuat hanya kolom-kolom
numerik, maka perlu membuang kolom Species.

> my_data2 <- my_data %>%


select(-Species)
> my_data2
# A tibble: 150 x 4
Sepal.Length Sepal.Width Petal.Length Petal.Width
<dbl> <dbl> <dbl> <dbl>
1 5.1 3.5 1.4 0.2
2 4.9 3 1.4 0.2
3 4.7 3.2 1.3 0.2
4 4.6 3.1 1.5 0.2
5 5 3.6 1.4 0.2
6 5.4 3.9 1.7 0.4
7 4.6 3.4 1.4 0.3
8 5 3.4 1.5 0.2
9 4.4 2.9 1.4 0.2
10 4.9 3.1 1.5 0.1
# ... with 140 more rows

65
Tranformasi semua nilai kolom
▪ Bagi nilai semua kolom dengan 2.54.
▪ Perhatikan bahwa, titik "." mewakili variabel apa pun

> my_data2 %>%


mutate_all(funs(./2.54))
# A tibble: 150 x 4
Sepal.Length Sepal.Width Petal.Length Petal.Width
<dbl> <dbl> <dbl> <dbl>
1 2.01 1.38 0.551 0.0787
2 1.93 1.18 0.551 0.0787
3 1.85 1.26 0.512 0.0787
4 1.81 1.22 0.591 0.0787
5 1.97 1.42 0.551 0.0787
6 2.13 1.54 0.669 0.157
7 1.81 1.34 0.551 0.118
8 1.97 1.34 0.591 0.0787
9 1.73 1.14 0.551 0.0787
10 1.93 1.22 0.591 0.0394
# ... with 140 more rows

66
▪ Nama fungsi akan ditambahkan ke nama kolom jika .funs memiliki nama atau
beberapa input:

> my_data2 %>%


mutate_all(funs(cm = ./2.54))
# A tibble: 150 x 8
Sepal.Length Sepal.Width Petal.Length Petal.Width
<dbl> <dbl> <dbl> <dbl>
1 5.1 3.5 1.4 0.2
2 4.9 3 1.4 0.2
3 4.7 3.2 1.3 0.2
4 4.6 3.1 1.5 0.2
5 5 3.6 1.4 0.2
6 5.4 3.9 1.7 0.4
7 4.6 3.4 1.4 0.3
8 5 3.4 1.5 0.2
9 4.4 2.9 1.4 0.2
10 4.9 3.1 1.5 0.1
# ... with 140 more rows, and 4 more variables:
# Sepal.Length_cm <dbl>, Sepal.Width_cm <dbl>,
# Petal.Length_cm <dbl>, Petal.Width_cm <dbl>

67
Transformasi kolom tertentu
▪ mutate_at(): mengubah kolom tertentu yang dipilih oleh nama
> my_data2 %>%
mutate_at(
c("Sepal.Length", "Petal.Width"),
funs(cm = ./2.54)
)
# A tibble: 150 x 6
Sepal.Length Sepal.Width Petal.Length Petal.Width
<dbl> <dbl> <dbl> <dbl>
1 5.1 3.5 1.4 0.2
2 4.9 3 1.4 0.2
3 4.7 3.2 1.3 0.2
4 4.6 3.1 1.5 0.2
5 5 3.6 1.4 0.2
6 5.4 3.9 1.7 0.4
7 4.6 3.4 1.4 0.3
8 5 3.4 1.5 0.2
9 4.4 2.9 1.4 0.2
10 4.9 3.1 1.5 0.1
# ... with 140 more rows, and 2 more variables:
# Sepal.Length_cm <dbl>, Petal.Width_cm <dbl>

68
▪ mutate_if(): mengubah kolom tertentu yang dipilih oleh fungsi predikat.
▪ Contoh: mentransformasi variabel dari satu tipe ke tipe lainnya.

> my_data %>% mutate_if(is.factor, as.character)


# A tibble: 150 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <chr>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# ... with 140 more rows

69
▪ Membulatkan semua variabel numerik

> my_data %>% mutate_if(is.numeric, round, digits = 0)


# A tibble: 150 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5 4 1 0 setosa
2 5 3 1 0 setosa
3 5 3 1 0 setosa
4 5 3 2 0 setosa
5 5 4 1 0 setosa
6 5 4 2 0 setosa
7 5 3 1 0 setosa
8 5 3 2 0 setosa
9 4 3 1 0 setosa
10 5 3 2 0 setosa
# ... with 140 more rows

70
Statistik ringkasan
Tujuan pembelajaran: mempelajari cara statistik ringkasan dari data frame
dalam tibble

71
Statistik ringkasan
▪ Dari data iris ingin dibuat statistik ringkasan dari suatu variabel Sepal.Length
berdasarkan variabel Species

> my_data %>%


group_by(Species) %>%
summarise(avg = mean(Sepal.Length),
min = min(Sepal.Length),
max = max(Sepal.Length),
sd = sd(Sepal.Length),
total = n())
# A tibble: 3 x 6
Species avg min max sd total
<fct> <dbl> <dbl> <dbl> <dbl> <int>
1 setosa 5.01 4.3 5.8 0.352 50
2 versicolor 5.94 4.9 7 0.516 50
3 virginica 6.59 4.9 7.9 0.636 50

72
Statistik ringkasan data iris untuk Sepal.Length, Sepal.Width,
Petal.Length, Petal.Width berdasarkan Species
> library(psych)
> describeBy(select(my_data,-Species),group=Species)

Descriptive statistics by group


group: setosa
vars n mean sd median trimmed mad min max range skew kurtosis se
Sepal.Length 1 50 5.01 0.35 5.0 5.00 0.30 4.3 5.8 1.5 0.11 -0.45 0.05
Sepal.Width 2 50 3.43 0.38 3.4 3.42 0.37 2.3 4.4 2.1 0.04 0.60 0.05
Petal.Length 3 50 1.46 0.17 1.5 1.46 0.15 1.0 1.9 0.9 0.10 0.65 0.02
Petal.Width 4 50 0.25 0.11 0.2 0.24 0.00 0.1 0.6 0.5 1.18 1.26 0.01
----------------------------------------------------------------------------------
group: versicolor
vars n mean sd median trimmed mad min max range skew kurtosis se
Sepal.Length 1 50 5.94 0.52 5.90 5.94 0.52 4.9 7.0 2.1 0.10 -0.69 0.07
Sepal.Width 2 50 2.77 0.31 2.80 2.78 0.30 2.0 3.4 1.4 -0.34 -0.55 0.04
Petal.Length 3 50 4.26 0.47 4.35 4.29 0.52 3.0 5.1 2.1 -0.57 -0.19 0.07
Petal.Width 4 50 1.33 0.20 1.30 1.32 0.22 1.0 1.8 0.8 -0.03 -0.59 0.03
----------------------------------------------------------------------------------
group: virginica
vars n mean sd median trimmed mad min max range skew kurtosis se
Sepal.Length 1 50 6.59 0.64 6.50 6.57 0.59 4.9 7.9 3.0 0.11 -0.20 0.09
Sepal.Width 2 50 2.97 0.32 3.00 2.96 0.30 2.2 3.8 1.6 0.34 0.38 0.05
Petal.Length 3 50 5.55 0.55 5.55 5.51 0.67 4.5 6.9 2.4 0.52 -0.37 0.08
Petal.Width 4 50 2.03 0.27 2.00 2.03 0.30 1.4 2.5 1.1 -0.12 -0.75 0.04

73

Anda mungkin juga menyukai