Data wrangling, disebut juga data munging atau data manipulation (dalam konotasi positif), merupakan proses transformasi atau menyiapkan data menjadi format siap dianalisis. Banyak tantangan yang dihadapi dalam tahapan ini, mulai dari ukuran data yang besar, format yang beragam, sumber yang tidak terintegrasi dan lain-lain. Sehingga tidak heran jika data wrangling menghabiskan hingga 80% dari waktu keseluruhan analsis yang kita lakukan.
Aktivitas utama dalam data wrangling di antaranya adalah:
Pada bagian ini akan dipraktikan bagaimana melakukan data
wrangling menggunakan paket base atau paket-paket
bawaan R lainnya. Adapun data yang akan digunakan adalah sebagai
berikut:
employees <- data.frame(ID = c(1,2,3,5,6,7),
Name = c("Alex", "Joni", "Banu", "Ani", "Riska", "John"),
Age = c(21,27,18,25,22,27),
Sex = c("M","M","M", "F", "F","M"))
employeesmore.employees <- data.frame(ID = c(11,12,13),
Name = c("Bunga", "Kembang", "Puspa"),
Age = c(25,27,21),
Sex = c("M","M","M"))
more.employeesaddress <- data.frame(ID = c(1,2,3,5,6,7),
City = c("Bandung","Jakarta","Bogor", "Jakarta", "Bandung", "Jakarta"))
addressSelelum melakukan data wrangling lebih lanjut, hal utama yang dikerjakan ada inspeksi terhadap dataframe, diantaranya menampilkan jumlah baris dan kolom, melihat statistik ringkasan, melihat struktur dataframe serta melihat beberapa baris data (baik baris teratas maupun terbawah)
## [1] 6
## [1] 4
## [1] 6 4
## ID Name Age Sex
## Min. :1.00 Length:6 Min. :18.00 Length:6
## 1st Qu.:2.25 Class :character 1st Qu.:21.25 Class :character
## Median :4.00 Mode :character Median :23.50 Mode :character
## Mean :4.00 Mean :23.33
## 3rd Qu.:5.75 3rd Qu.:26.50
## Max. :7.00 Max. :27.00
## 'data.frame': 6 obs. of 4 variables:
## $ ID : num 1 2 3 5 6 7
## $ Name: chr "Alex" "Joni" "Banu" "Ani" ...
## $ Age : num 21 27 18 25 22 27
## $ Sex : chr "M" "M" "M" "F" ...
Mengakses atau memilih sebagian elemen dari dataframe dapat
menggunakan operator [ ], [[ ]] dan
$
## [1] "Alex"
## [1] "Alex"
## [1] "Alex"
## [1] "Alex" "Joni" "Banu" "Ani" "Riska" "John"
## [1] "Alex" "Joni" "Banu" "Ani" "Riska" "John"
## [1] "Alex" "Joni" "Banu" "Ani" "Riska" "John"
Dimungkinkan untuk mengubah/mengupdate nilai dari dataframe (misalnya jika diketahui ada kesalahan pencatatan)
Mengurutkan baris dapat dilakukan secara ascending (dari kecil ke besar, atau A-Z) atau descending (dari kecil ke besar, atau Z-A).
Penggabungan dataframe dapat dilakukan secara column-wise (merge)
ataupun row-wise (union). Untuk merge, bisa dilakukan dengan perintah
merge() (berdasarkan ID tertentu), atau
cbind() (berdasarkan urutan baris). Untuk penggabungan
union, bisa menggunakan rbind()
# menggabungkan kolom berdardasarkan urutan baris
Salary <- c(100, 120, 110, 90, 130, 120)
cbind(employees, Salary) # menggabungkan baris berdasarkan urutan kolom
all.employees <- rbind(employees, more.employees)
all.employeesMenghitung agregasi data
## [1] 24.88889
# menghitung jumlah employees berdasarkan jenis kelamin
aggregate(all.employees$Sex, list(City=all.employees$Sex), FUN=length)Reshaping adalah mengubah format dataframe dari “long” ke “wide” atau sebaliknya. Sebagai contoh
# https://riptutorial.com/r/example/12036/the-reshape-function
set.seed(1234)
df <- data.frame(identifier=rep(1:5, each=3),
location=rep(c("up", "down", "left", "up", "center"), each=3),
period=rep(1:3, 5), counts=sample(35, 15, replace=TRUE),
values=runif(15, 5, 10))[-c(4,8,11),]
dfStatistika dan Sains Data, IPB University, alfanugraha@apps.ipb.ac.id↩︎