Jak używać gsub() w r do zastępowania wielu szablonów


Funkcji gsub() w R można użyć do zastąpienia wszystkich wystąpień określonego wzorca w ciągu znaków w R.

Aby zastąpić wiele modeli jednocześnie, możesz użyć zagnieżdżonej instrukcji gsub() :

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

Jednak znacznie szybszą metodą jest funkcja stri_replace_all_regex() z pakietu stringi , która wykorzystuje następującą składnię:

 library (stringi)

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

Poniższe przykłady pokazują, jak zastosować każdą metodę w praktyce.

Metoda 1: Zastąp wiele szablonów zagnieżdżoną funkcją gsub()

Załóżmy, że mamy następującą ramkę danych w 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

Możemy użyć zagnieżdżonej instrukcji gsub(), aby zastąpić wiele wzorców w kolumnie nazwa :

 #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

Należy zauważyć, że A, B i C w kolumnie nazwy zostały zastąpione nowymi wartościami.

Metoda 2: Zamień wiele modeli na stringi

Znacznie szybszym sposobem zastąpienia wielu wzorców jest użycie funkcji stri_replace_all_regex() z pakietu stringi .

Poniższy kod pokazuje, jak używać tej funkcji:

 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

Należy zauważyć, że wynikowa ramka danych jest zgodna z ramką z poprzedniego przykładu.

Jeśli Twoja ramka danych jest nawet umiarkowanie duża, zauważysz, że ta funkcja jest znacznie szybsza niż funkcja gsub() .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w języku R:

Jak korzystać z funkcji zamiany () w R
Jak warunkowo zastąpić wartości w ramce danych R

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *