ตอบ: วิธีใช้ grepl กับหลายรุ่น
คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้กับฟังก์ชัน grepl() ใน R เพื่อกรองแถวในกรอบข้อมูลที่มีรูปแบบสตริงหลายรูปแบบในคอลัมน์เฉพาะ:
library (dplyr) new_df <- filter(df, grepl(paste(my_patterns, collapse=' | '), my_column))
ไวยากรณ์เฉพาะนี้จะกรองกรอบข้อมูลสำหรับแถวโดยที่ค่าของคอลัมน์ชื่อ my_column มีหนึ่งในรูปแบบสตริงในเวกเตอร์ที่เรียกว่า my_patterns
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ
ตัวอย่าง: วิธีใช้ grepl() กับหลายรุ่นใน R
สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ซึ่งมีข้อมูลเกี่ยวกับทีมบาสเก็ตบอลต่างๆ:
#create data frame df <- data. frame (team=c('Mavs', 'Hawks', 'Nets', 'Heat', 'Cavs'), points=c(104, 115, 124, 120, 112), status=c('Bad', 'Good', 'Excellent', 'Great', 'Bad')) #view data frame df team points status 1 Mavs 104 Bad 2 Hawks 115 Good 3 Nets 124 Excellent 4 Heat 120 Great 5 Cavs 112 Bad
สมมติว่าเราต้องการกรองกรอบข้อมูลให้มีเฉพาะแถวที่สตริงคอลัมน์ สถานะ มีรูปแบบสตริงอย่างใดอย่างหนึ่งต่อไปนี้:
- ‘ดี’
- ‘สีเทา’
- ‘อดีต’
เราสามารถใช้ไวยากรณ์ต่อไปนี้ร่วมกับฟังก์ชัน grepl() เพื่อทำสิ่งนี้:
library (dplyr) #define patterns to search for my_patterns <- c(' Good ', ' Gre ', ' Ex ') #filter for rows where status column contains one of several strings new_df <- filter(df, grepl(paste(my_patterns, collapse=' | '), status)) #view results new_df team points status 1 Hawks 115 Good 2 Nets 124 Excellent 3 Heat 120 Great
โปรดทราบว่ากรอบข้อมูลได้รับการกรองเพื่อให้มีเฉพาะแถวที่สตริงในคอลัมน์ สถานะ มีหนึ่งในสามรูปแบบที่เราระบุ
โปรดทราบว่าการใช้ฟังก์ชัน Paste() กับอาร์กิวเมนต์ Collapses=’|’ จริงๆ แล้วเรามองหาสตริง “Good|Gre|Ex” ในคอลัมน์ สถานะ
ตั้งแต่ | สัญลักษณ์ใน R หมายถึง “OR” เราสามารถค้นหาแถวที่มี “Good” หรือ Gre” หรือ “Ex” ในคอลัมน์ สถานะ ได้
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:
วิธีการกลายพันธุ์ตัวแปรหากคอลัมน์มีสตริงโดยใช้ dplyr
วิธีลบอักขระตัวแรกออกจากสตริงโดยใช้ dplyr
วิธีแทนที่สตริงในคอลัมน์โดยใช้ dplyr