วิธีใช้ gsub() ใน r เพื่อแทนที่หลายเทมเพลต


ฟังก์ชัน gsub() ใน R สามารถใช้เพื่อแทนที่รูปแบบบางอย่างในสตริงใน R ได้

หากต้องการแทนที่หลายรุ่นในคราวเดียว คุณสามารถใช้คำสั่ง gsub() ที่ซ้อนกันได้:

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

อย่างไรก็ตาม วิธีที่เร็วกว่ามากคือฟังก์ชัน stri_replace_all_regex() จากแพ็คเกจ stringi ซึ่งใช้ไวยากรณ์ต่อไปนี้:

 library (stringi)

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

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติ

วิธีที่ 1: แทนที่เทมเพลตหลายรายการด้วย gsub() ที่ซ้อนกัน

สมมติว่าเรามี data frame ต่อไปนี้ใน 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

เราสามารถใช้คำสั่ง gsub() ที่ซ้อนกันเพื่อแทนที่หลายรูปแบบในคอลัมน์ ชื่อ :

 #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

โปรดทราบว่า A, B และ C ในคอลัมน์ ชื่อ ถูกแทนที่ด้วยค่าใหม่ทั้งหมด

วิธีที่ 2: แทนที่หลายรุ่นด้วย stringi

วิธีที่เร็วกว่ามากในการแทนที่หลายรูปแบบคือการใช้ฟังก์ชัน stri_replace_all_regex() จากแพ็คเกจ stringi

รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้:

 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

โปรดทราบว่ากรอบข้อมูลผลลัพธ์จะตรงกับตัวอย่างก่อนหน้า

หากกรอบข้อมูลของคุณมีขนาดใหญ่ปานกลาง คุณจะสังเกตเห็นว่าฟังก์ชันนี้เร็วกว่าฟังก์ชัน gsub() มาก

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน R:

วิธีใช้ฟังก์ชันแทนที่() ใน R
วิธีแทนที่ค่าตามเงื่อนไขใน R dataframe

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *