5 minute read

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:

  1. Pattern Matching; mencari kecocokan pattern dari suatu data bertipe character.
  2. 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 fungsi str_detect()

Output dari fungsi ini berupa logic (boolean):

stringr::str_detect(string,pattern)
## [1] FALSE  TRUE FALSE FALSE  TRUE
  • Function menggunakan stringr:: dan fungsi str_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 fungsi str_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.