ตอบ: วิธีใช้ 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

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

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