ตอบ: ตรวจสอบว่าสตริงมีหลายสตริงย่อยหรือไม่


คุณสามารถใช้วิธีการต่อไปนี้ใน R เพื่อตรวจสอบว่าสตริงมีหลายสตริงย่อยหรือไม่:

วิธีที่ 1: ตรวจสอบว่าสตริงประกอบด้วยสตริงย่อยหลายรายการหรือไม่

 df$contains_any <- apply(sapply(find_strings, grepl, df$team), 1 , any )

ไวยากรณ์เฉพาะนี้จะตรวจสอบว่าแต่ละสตริงในคอลัมน์ ทีม มี หนึ่ง ในสตริงที่ระบุในเวกเตอร์สตริงที่เรียกว่า find_strings หรือไม่

วิธีที่ 2: ตรวจสอบว่าสตริงประกอบด้วยสตริงย่อยหลายรายการหรือไม่

 df$contains_any <- apply(sapply(find_strings, grepl, df$team), 1 , all )

ไวยากรณ์เฉพาะนี้จะตรวจสอบว่าแต่ละสตริงในคอลัมน์ ทีม มีสตริง ทั้งหมด ที่ระบุในเวกเตอร์สตริงที่เรียกว่า find_strings หรือ ไม่

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

 #create data frame
df = data. frame (team=c('Good East Team', 'Good West Team', 'Great East Team',
                       'Great West Team', 'Bad East Team', 'Bad West Team'),
                points=c(93, 99, 105, 110, 85, 88))

#view data frame
df

             team points
1 Good East Team 93
2 Good West Team 99
3 Great East Team 105
4 Great West Team 110
5 Bad East Team 85
6 Bad West Team 88

ตัวอย่าง ที่ 1: ตรวจสอบว่าสตริงมีสตริงย่อยหลายรายการหรือไม่

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อตรวจสอบว่าแต่ละสตริงในคอลัมน์ ทีม มีสตริงย่อย “ดี” หรือ “เป็น”:

 #define substrings to look for
find_strings <- c(' Good ', ' East ')

#check if each string in team column contains either substring
df$good_or_east <- apply(sapply(find_strings, grepl, df$team), 1 , any )

#view updated data frame
df

             team points good_or_east
1 Good East Team 93 TRUE
2 Good West Team 99 TRUE
3 Great East Team 105 TRUE
4 Great West Team 110 FALSE
5 Bad East Team 85 TRUE
6 Bad West Team 88 FALSE

คอลัมน์ good_or_east ใหม่จะส่งกลับค่าต่อไปนี้:

  • TRUE ถ้าทีมมีคำว่า “ดี” หรือ “เป็น”
  • FALSE หากทีมไม่มีทั้ง “ดี” หรือ “ตะวันออก”

ตัวอย่างที่ 2 : ตรวจสอบว่าสตริงมีหลายสตริงย่อยหรือไม่

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อตรวจสอบว่าแต่ละสตริงในคอลัมน์ ทีม มีสตริงย่อย “Good” และ “Is” หรือไม่:

 #define substrings to look for
find_strings <- c(' Good ', ' East ')

#check if each string in team column contains either substring
df$good_and_east <- apply(sapply(find_strings, grepl, df$team), 1 , all )

#view updated data frame
df

             team points good_and_east
1 Good East Team 93 TRUE
2 Good West Team 99 FALSE
3 Great East Team 105 FALSE
4 Great West Team 110 FALSE
5 Bad East Team 85 FALSE
6 Bad West Team 88 FALSE

คอลัมน์ใหม่ good_and_east ส่งคืนค่าต่อไปนี้:

  • TRUE ถ้าทีมมีคำว่า “ดี” และ “เป็น”
  • FALSE หากทีมไม่มีคำว่า “ดี” และ “เป็น”

โปรดทราบว่าจะมีการส่งคืนค่า TRUE เพียงค่าเดียวเนื่องจากมีชื่อทีมเพียงชื่อเดียวที่มีสตริงย่อย “Good” และ สตริงย่อย “East”

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

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

ตอบ: จะตรวจสอบได้อย่างไรว่าตัวละครอยู่ในสตริงหรือไม่
ตอบ: วิธีลบช่องว่างออกจากสตริง
ตอบ: วิธีแยกสตริงระหว่างอักขระเฉพาะ

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

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