TUTORIAL R for DATA SCIENCE - part 8: Pattern Matching (Reguler Expression)
Ada kalanya kita harus bekerja dengan data dengan tipe character
atau
string
.
Regex
Regex adalah kepanjangan dari reguler expression, yakni mencari pattern dari data berupa string. Cheatsheet untuk regex bisa dilihat di sini.
Selain mengandalkan base dari R, kita juga bisa menggunakan
library(stringr)
.
Setidaknya ada dua manfaat utama dari regular expression, yakni:
- Pattern Matching; mencari kecocokan pattern dari suatu data
bertipe
character
. - Replace Pattern; mencari kecocokan pattern dan mengubahnya dari
suatu data bertipe
character
.
Perbedaan cara penulisan (kapital atau lower) bisa kita pertimbangkan
untuk dijadikan syarat pencarian atau tidak, yakni dengan penambahan
ignore.case = T
atau ignore.case = F
.
Berikut ini adalah syntaxes yang ada dan digunakan untuk mencari apa:
Pattern Matching
Sebagai contoh, saya akan gunakan data berikut ini:
Variabel string yang diketahui:
string = c('Market Research','market riset','survey','responden','mickey mouse')
Berikut pattern yang diinginkan:
pattern = 'm..ke'
Berikut adalah beberapa fungsi yang sering digunakan.
- Function
grep()
Perhatikan output dari masing-masing perintah sebagai berikut:
grep(pattern,string)
## [1] 2 5
Output function
ini adalah nomor urut / elemen dari vector yang
sesuai dengan pattern yang diinginkan.
grep(pattern,string,value = T)
## [1] "market riset" "mickey mouse"
Output function
ini adalah isi elemen dari vector yang sesuai
dengan pattern yang diinginkan.
grep(pattern,string,ignore.case = T)
## [1] 1 2 5
Output function
ini adalah isi elemen dari vector yang sesuai
dengan pattern yang diinginkan dengan menghiraukan uppercase atau
lowercase.
- Function
grepl()
Output dari fungsi ini berupa logic (boolean):
grepl(pattern,string,ignore.case = T)
## [1] TRUE TRUE FALSE FALSE TRUE
- Function menggunakan
stringr::
dan fungsistr_detect()
Output dari fungsi ini berupa logic (boolean):
stringr::str_detect(string,pattern)
## [1] FALSE TRUE FALSE FALSE TRUE
- Function menggunakan
stringr::
dan fungsistr_locate()
Find starting and end position of all matches.
stringr::str_locate(string, pattern)
## start end
## [1,] NA NA
## [2,] 1 5
## [3,] NA NA
## [4,] NA NA
## [5,] 1 5
- Function menggunakan
stringr::
dan fungsistr_extract()
Extract first match.
stringr::str_extract(string, pattern)
## [1] NA "marke" NA NA "micke"
Replace Pattern
Kita akan gunakan contoh data berikut ini:
Ini adalah string
yang digunakan:
string = c("This is a sentence about axis",
"A second pattern is also listed here")
Berikut adalah pattern
dan replacement
yang hendak dilakukan:
pattern = 'is'
replace = 'XY'
Berikut adalah beberapa fungsi yang sering digunakan:
function
sub()
sub(pattern, replace, string)
## [1] "ThXY is a sentence about axis"
## [2] "A second pattern XY also listed here"
sub(pattern, replace, string, ignore.case = T)
## [1] "ThXY is a sentence about axis"
## [2] "A second pattern XY also listed here"
function
gsub()
gsub(pattern, replace, string)
## [1] "ThXY XY a sentence about axXY"
## [2] "A second pattern XY also lXYted here"
gsub(pattern, replace, string, ignore.case = T)
## [1] "ThXY XY a sentence about axXY"
## [2] "A second pattern XY also lXYted here"
to be continued
if you find this article helpful, support this blog by clicking the
ads.