Perbandingan grep() dan grepl() di r: apa bedanya?


Dua fungsi yang sering membingungkan orang di R adalah grep() dan grepl() . Kedua fungsi tersebut memungkinkan Anda melihat apakah ada pola tertentu dalam string, namun keduanya memberikan hasil yang berbeda:

  • grepl() mengembalikan TRUE ketika sebuah pola ada dalam sebuah string.
  • grep() mengembalikan vektor indeks string yang berisi pola tersebut.

Contoh berikut menggambarkan perbedaan ini:

 #create a vector of data
data <- c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center')

grep ('Guard', data)
[1] 1 2

grepl ('Guard', data) 
[1] TRUE TRUE FALSE FALSE FALSE

Contoh berikut menunjukkan kapan Anda mungkin ingin menggunakan salah satu fungsi ini dibandingkan fungsi lainnya.

Kapan menggunakan grep()

1. Filter baris yang berisi string tertentu

Salah satu kegunaan paling umum dari grepl() adalah memfilter baris dalam bingkai data yang berisi string tertentu:

 library(dplyr)

#create data frame
df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'),
                 points = c(12, 15, 19, 22, 32),
                 rebounds = c(5, 7, 7, 12, 11))

#filter rows that contain the string 'Guard' in the player column
df %>% filter( grepl ('Guard', player))

   player points rebounds
1 P Guard 12 5
2 S Guard 15 7

Terkait: Cara memfilter baris yang berisi string tertentu menggunakan dplyr

Kapan menggunakan grep()

1. Pilih kolom yang berisi string tertentu

Anda dapat menggunakan grep() untuk memilih kolom dalam bingkai data yang berisi string tertentu:

 library(dplyr)

#create data frame
df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'),
                 points = c(12, 15, 19, 22, 32),
                 rebounds = c(5, 7, 7, 12, 11))

#select columns that contain the string 'p' in their name
df %>% select( grep ('p', colnames(df)))

     player points
1 P Guard 12
2 S Guard 15
3S Forward 19
4P Forward 22
5 Center 32

2. Hitung jumlah baris yang memuat string tertentu

Anda dapat menggunakan grep() untuk menghitung jumlah baris dalam bingkai data yang berisi string tertentu:

 #create data frame
df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'),
                 points = c(12, 15, 19, 22, 32),
                 rebounds = c(5, 7, 7, 12, 11))

#count how many rows contain the string 'Guard' in the player column
length( grep ('Guard', df$player))

[1] 2

Anda dapat menemukan lebih banyak tutorial R di sini .

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *