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 .