Cara menggunakan gsub() di r untuk mengganti beberapa template


Fungsi gsub() di R dapat digunakan untuk menggantikan semua kemunculan pola tertentu dalam string di R.

Untuk mengganti beberapa model sekaligus, Anda dapat menggunakan pernyataan gsub() bertingkat:

 df$col1 <- gsub(' old1 ', ' new1 ',
           gsub(' old2 ', ' new2 ',
           gsub(' old3 ', ' new3 ', df$col1)))

Namun, metode yang lebih cepat adalah fungsi stri_replace_all_regex() dari paket stringi , yang menggunakan sintaks berikut:

 library (stringi)

df$col1 <- stri_replace_all_regex(df$col1,
                                  pattern=c(' old1 ', ' old2 ', ' old3 '),
                                  replacement=c(' new1 ', ' new2 ', ' new3 '),
                                  vectorize= FALSE )

Contoh berikut menunjukkan cara menggunakan masing-masing metode dalam praktik.

Metode 1: Ganti beberapa templat dengan gsub() bersarang

Misalkan kita memiliki bingkai data berikut di R:

 #create data frame
df <- data. frame (name=c('A', 'B', 'B', 'C', 'D', 'D'),
                 dots=c(24, 26, 28, 14, 19, 12))

#view data frame
df

  name points
1 to 24
2 B 26
3 B 28
4 C 14
5 D 19
6 D 12

Kita bisa menggunakan pernyataan gsub() bersarang untuk mengganti beberapa pola di kolom nama :

 #replace multiple patterns in name column
df$name <- gsub(' A ', ' Andy ',
           gsub(' B ', ' Bob ',
           gsub(' C ', ' Chad ', df$name)))

#view updated data frame
df

  name points
1Andy 24
2 Bob 26
3 Bob 28
4 Chad 14
5 D 19
6 D 12

Perhatikan bahwa A, B, dan C di kolom nama semuanya telah diganti dengan nilai baru.

Metode 2: Ganti beberapa model dengan stringi

Cara yang lebih cepat untuk mengganti beberapa pola adalah dengan menggunakan fungsi stri_replace_all_regex() dari paket stringi .

Kode berikut menunjukkan cara menggunakan fungsi ini:

 library (stringi)

#replace multiple patterns in name column
df$name <- stri_replace_all_regex(df$name,
                                  pattern=c(' A ', ' B ', ' C '),
                                  replacement=c(' Andy ', ' Bob ', ' Chad '),
                                  vectorize= FALSE )

#view updated data frame
df

  name points
1Andy 24
2 Bob 26
3 Bob 28
4 Chad 14
5 D 19
6 D 12

Perhatikan bahwa bingkai data yang dihasilkan cocok dengan contoh sebelumnya.

Jika bingkai data Anda cukup besar, Anda akan melihat bahwa fungsi ini jauh lebih cepat daripada fungsi gsub() .

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di R:

Cara menggunakan fungsi replace() di R
Cara mengganti nilai secara kondisional dalam kerangka data R

Tambahkan komentar

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