使用 `stringr` 检测列表中的特定单词

Using `stringr` to detect specific words in a list

我正在处理一些如下所示的数据:

GameID EventID Route                                        
    <int>   <int> <chr>                                        
 1   2793      15 Fade - Back Shoulder, Curl, Go/Fly, Out, Curl
 2   2793      25 Go/Fly, Curl, Dig, Check & Release           
 3   2793      45 Fade, Swing - Left, Slant, Dig, Curl         
 4   2793      50 Jet Sweep Pass, Swing - Right                
 5   2793      55 Corner, Curl, Post, Curl, Slant              
 6   2793      60 Sluggo, Post, Curl, Chip - Flat, Flat - Left 
 7   2793      65 Go/Fly, Seam, Deep Cross, Dig, Flat - Right  
 8   2793      70 Curl, Dig, Post, Chip - Flat                 
 9   2793      85 Curl, Seam, Curl, Dig, Curl                  
10   2793      95 Screen - RB               

我正在尝试使用 str_detect 来查找 Routes 列中的组。

例如:

tare.route <- route.data %>%
  filter(str_detect(Route, "Slant" & "Fade"))

但是,这样做时,出现以下错误:

Error: Problem with `filter()` input `..1`.
x operations are possible only for numeric, logical or complex types
i Input `..1` is `str_detect(Route, "Slant" & "Fade")`.

基本上,我试图使用上面的代码来提取每个 Route 观察结果,其中包括 JUST 我正在搜索的词(它们没有与数据中列出的顺序相同......它们只是 必须包含

如有任何帮助,我们将不胜感激。

数据的可重现示例

structure(list(GameID = c(2793L, 2793L, 2793L, 2793L, 2793L, 
2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 
2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 
2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 
2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 
2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 
2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 
2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 2793L, 
2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 
2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 
2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 
2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 
2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 
2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 
2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 
2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 
2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 
2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 2794L, 
2794L, 2794L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 
2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 
2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 
2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 
2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 
2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 
2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 
2795L, 2795L, 2795L, 2795L, 2795L, 2795L, 2796L, 2796L, 2796L, 
2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 
2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 
2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 
2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 
2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 
2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 
2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 
2796L, 2796L, 2796L, 2796L, 2796L, 2796L, 2796L), EventID = c(15L, 
25L, 45L, 50L, 55L, 60L, 65L, 70L, 85L, 95L, 100L, 110L, 115L, 
135L, 155L, 160L, 170L, 175L, 180L, 185L, 200L, 210L, 225L, 235L, 
255L, 290L, 295L, 305L, 320L, 340L, 345L, 350L, 355L, 360L, 365L, 
370L, 380L, 385L, 415L, 425L, 440L, 445L, 465L, 480L, 500L, 515L, 
525L, 530L, 545L, 565L, 570L, 580L, 610L, 625L, 630L, 635L, 645L, 
660L, 665L, 675L, 700L, 715L, 720L, 725L, 730L, 735L, 805L, 810L, 
25L, 30L, 45L, 60L, 65L, 70L, 80L, 85L, 95L, 105L, 115L, 120L, 
135L, 140L, 155L, 160L, 170L, 190L, 205L, 215L, 260L, 265L, 275L, 
285L, 290L, 295L, 300L, 310L, 325L, 330L, 350L, 355L, 380L, 390L, 
405L, 415L, 435L, 440L, 445L, 450L, 455L, 495L, 500L, 505L, 515L, 
525L, 540L, 565L, 575L, 580L, 600L, 615L, 620L, 625L, 635L, 645L, 
650L, 655L, 665L, 670L, 695L, 700L, 715L, 720L, 725L, 730L, 735L, 
755L, 760L, 770L, 775L, 780L, 785L, 790L, 795L, 810L, 815L, 830L, 
855L, 860L, 865L, 870L, 875L, 880L, 890L, 900L, 905L, 910L, 920L, 
925L, 940L, 945L, 15L, 20L, 30L, 35L, 55L, 75L, 100L, 120L, 135L, 
145L, 165L, 180L, 210L, 225L, 230L, 235L, 260L, 265L, 275L, 290L, 
295L, 300L, 320L, 325L, 345L, 360L, 370L, 380L, 390L, 400L, 410L, 
415L, 420L, 425L, 430L, 465L, 470L, 485L, 505L, 515L, 520L, 525L, 
540L, 545L, 560L, 580L, 585L, 600L, 605L, 610L, 615L, 620L, 630L, 
635L, 645L, 650L, 660L, 680L, 720L, 725L, 730L, 740L, 755L, 760L, 
785L, 805L, 840L, 10L, 20L, 30L, 35L, 40L, 70L, 80L, 90L, 95L, 
100L, 130L, 135L, 140L, 150L, 160L, 175L, 185L, 215L, 220L, 235L, 
245L, 250L, 260L, 275L, 280L, 285L, 290L, 305L, 330L, 335L, 340L, 
345L, 350L, 380L, 385L, 395L, 405L, 420L, 425L, 435L, 440L, 465L, 
495L, 500L, 510L, 515L, 520L, 535L, 545L, 555L, 560L, 580L, 595L, 
600L, 615L, 635L, 645L, 665L, 680L, 685L, 690L, 695L, 700L, 710L, 
715L, 725L, 730L, 745L, 755L, 775L, 780L, 785L, 790L), Route = c("Fade - Back Shoulder, Curl, Go/Fly, Out, Curl", 
"Go/Fly, Curl, Dig, Check & Release", "Fade, Swing - Left, Slant, Dig, Curl", 
"Jet Sweep Pass, Swing - Right", "Corner, Curl, Post, Curl, Slant", 
"Sluggo, Post, Curl, Chip - Flat, Flat - Left", "Go/Fly, Seam, Deep Cross, Dig, Flat - Right", 
"Curl, Dig, Post, Chip - Flat", "Curl, Seam, Curl, Dig, Curl", 
"Screen - RB", "Flat - Right, Fade, Out, Fade, Out", "Curl, Flat - Left, Dig", 
"Deep Cross, Screen - Bubble, Post, Run Fake", "Curl, Curl, Curl", 
"Swing - Left, Screen - TE, Screen - Bubble", "Curl, Flat - Left, Curl, Flat - Right", 
"Flat - Right, Slant, Slant, Run Fake", "Run Fake, Beneath, Fade", 
"Flat - Left, Swing - Right, Comeback, Deep Cross", "Curl, Post, Slant, Drag, Flat - Left", 
"Swing - Right, Run Fake, Slant", "Curl, Fade, Dig, Dig, Flat - Right", 
"Curl, Chip - Flat, Curl, Chip - Flat", "Chip - Drag, Go/Fly, Out, Dig, Chip - Flat", 
"Curl, Slant, Flat - Left, Curl, Wheel", "Drag, Curl, Deep Cross, Drag, Flat - Left", 
"Whip, Whip, Corner", "Screen - Tunnel, Run Fake", "Wheel, Deep Cross, Beneath, Run Fake, Seam", 
"Post, Curl, Fade, Out, Chip - Flat", "Dig, Seam, Corner, Drag, Dig", 
"Curl, Drag, Drag, Out, Swing - Left", "Dig, Dig, Fade, Out", 
"Check & Release, Go/Fly, Seam, Fade, Seam", "Curl, Post, Drag, Out, Chip - Curl", 
"Dig, Post, Curl, Go/Fly", "Curl, Slant, Slant, Corner, Swing - Right", 
"Go/Fly, Corner, Out, Curl", "Fade, Out, Run Fake", "Slant, Slant, Dig, Out, Out", 
"Screen - Bubble, Slant, Flat - Right", "Post, Wheel, Swing - Left, Post, Seam", 
"Swing - Left, Dig, Run Fake", "Slant, Curl, Seam, Slant, Swing - Left", 
"Out, Post, Out, Deep Cross, Check & Release", "Flat - Right, Swing - Left, Drag, Out", 
"Dig, Flat - Left, Fade, Curl, Check & Release", "Dig, Deep Cross, Dig, Drag, Flat - Left", 
"Drag, Deep Cross, Seam, Fade, Swing - Left", "Whip, Fade, Seam, Curl, Post", 
"Dig, Out, Post, Drag", "Out, Out, Run Fake", "Over Ball, Pick, Drag, Curl, Swing - Right", 
"Seam, Curl, Out, Slant, Fade", "Fade, Curl, Fade, Curl, Check & Release", 
"Dig, Curl, Out, Fade, Fade", "Out, Go/Fly, Dig, Dig, Out", "Out, Flat - Right, Fade, Fade, Chip - Flat", 
"Out, Curl, Out, Out", "Curl, Drag, Fade, Seam, Seam", "Curl, Drag, Corner, Slant, Flat - Left", 
"Out, Fade, Fade, Go/Fly, Curl", "Go/Fly, Out, Post, Out, Hitch & Go", 
"Curl, Slant, Fade, Screen - Tunnel", "Curl, Corner, Dig, Slant, Post", 
"Out, Corner, Corner, Dig, Slant", "Dig, Out, Fade, Seam, Curl", 
"Curl, Post, Curl, Fade, Curl", "Curl, Dig, Corner, Drag, Flat - Right", 
"Check & Release, Corner, Chip - Flat, Dig, Chip - Flat", "Curl, Curl, Curl, Out, Chip - Flat", 
"Deep Cross, Corner, Run Fake, Whip, Run Fake", "Dig, Go/Fly, Post, Go/Fly, Dig", 
"Chip - Flat, Go/Fly, Go/Fly, Out, Slant", "Post, Wheel, Drag, Dig, Swing - Left", 
"Screen - RB, Slant, Beneath", "Flat - Right, Fade, Go/Fly, Drag, Dig", 
"Curl, Comeback, Curl, Slant, Slant", "Screen - Quick", "Beneath, Drag, Corner, Flat - Right", 
"Whip, Post", "Comeback, Deep Cross, Flat - Left", "Go/Fly, Out, Curl, Dig, Flat - Right", 
"Flat - Left, Slant, Curl, Dig, Flat - Right", "Go/Fly, Go/Fly, Fade, Dig, Screen - RB", 
"Flat - Left, Curl, Deep Cross", "Out, Curl, Curl, Out", "Check & Release, Fade, Screen - Quick, Curl", 
"Slant, Curl, Curl, Corner, Swing - Right", "Go/Fly, Curl, Go/Fly, Curl, Check & Release", 
"Flat - Left, Deep Cross, Whip, Chip - Flat, Corner", "Slant, Curl, Go/Fly, Flat - Right", 
"Deep Cross, Curl, Post, Screen - RB", "Screen - Tunnel, Swing - Left", 
"Out, Drag, Dig, Fade", "Drag, Drag, Seam, Flat - Right", "Swing - Left, Deep Cross, Slant, Deep Cross, Go/Fly", 
"Corner, Curl, Curl, Curl, Flat - Right", "Curl, Curl, Flat - Left, Corner, Flat - Right", 
"Check & Release, Dig, Deep Cross, Deep Cross, Drag", "Curl, Post, Out, Seam, Quick", 
"Swing - Left, Go/Fly, Drag, Go/Fly, Out", "Out, Curl, Over Ball, Out, Check & Release", 
"Dig, Curl, Fade, Flat - Right, Swing - Left", "Curl, Curl, Curl, Curl, Curl", 
"Chip - Flat, Post, Curl, Fade", "Curl, Flat - Right, Corner, Flat - Left, Corner", 
"Check & Release, Curl, Dig, Dig, Flat - Right", "Dig, Flat - Left, Curl, Slant, Pick", 
"Beneath, Deep Cross, Dig, Flat - Left", "Quick, Seam, Out, Go/Fly", 
"Post, Slant, Go/Fly, Drag", "Hitch & Go, Curl, Post, Drag, Angle", 
"Post, Seam, Deep Cross, Flat - Left, Chip - Drag", "Seam, Post, Go/Fly, Go/Fly, Drag", 
"Check & Release, Drag, Out, Dig, Dig", "Screen - RB, Go/Fly, Deep Cross", 
"Chip - Curl, Dig, Dig, Out, Out", "Flat - Right, Post, Out, Curl, Seam", 
"Flat - Right, Out, Dig, Sluggo, Curl", "Corner, Screen - RB, Flat - Right", 
"Run Fake, Slant, Screen - Bubble, Slant", "Go/Fly, Curl, Seam, Go/Fly, Out", 
"Flat - Right, Corner, Curl, Over Ball", "Flat - Left, Deep Cross, Go/Fly", 
"Run Fake, Deep Cross, Deep Cross", "Screen - Quick", "Wheel, Go/Fly, Drag, Go/Fly", 
"Seam, Go/Fly, Chip - Drag, Drag, Chip - Flat", "Slant, Slant, Post, Slant", 
"Angle, Dig, Post, Out, Drag", "Swing - Right, Corner, Out, Dig, Curl", 
"Check & Release, Curl, Out, Over Ball, Curl", "Dig, Seam, Dig, Dig, Corner", 
"Flat - Right, Corner, Flat - Left, Corner, Curl", "Wheel, Drag, Curl, Drag, Go/Fly", 
"Drag, Go/Fly, Go/Fly, Seam, Chip - Flat", "Comeback, Dig, Flat - Left, Dig, Post", 
"Slant, Over Ball, Slant, Slant, Flat - Left", "Out, Corner, Curl, Dig, Check & Release", 
"Curl, Flat - Right, Dig, Curl, Seam", "Drag, Out, Out, Drag", 
"Curl, Dig, Out, Curl", "Slant, Out, Go/Fly, Flat - Left, Sluggo", 
"Post Corner, Whip, Drag, Beneath, Run Fake", "Go/Fly, Run Fake, Slant, Chip - Flat, Chip - Flat", 
"Corner, Curl, Dig, Post, Out", "Out, Go/Fly, Post, Swing - Right, Curl", 
"Curl, Slant, Flat - Right, Slant, Curl", "Corner, Chip - Flat, Corner, Chip - Flat, Curl", 
"Curl, Post, Comeback, Curl, Seam", "Go/Fly, Curl, Post, Chip - Flat, Out", 
"Slant, Flat - Left, Go/Fly, Go/Fly, Screen - RB", "Curl, Go/Fly, Go/Fly, Go/Fly, Seam", 
"Flat - Right, Corner, Curl, Dig, Swing - Left", "Dig, Curl, Corner, Flat - Right, Swing - Left", 
"Dig, Curl, Corner, Drag, Flat - Left", "Dig, Whip, Stick - Nod, Drag, Flat - Left", 
"Seam, Go/Fly, Go/Fly, Go/Fly, Curl", "Go/Fly, Go/Fly, Go/Fly, Deep Cross", 
"Curl, Curl, Curl, Curl, Out", "Curl, Seam, Curl, Seam, Over Ball", 
"Go/Fly, Over Ball, Dig, Flat - Right, Angle", "Slant, Chip - Curl, Slant, Flat - Right", 
"Screen - Bubble, Run Fake", "Drag, Flat - Right, Dig, Drag", 
"Go/Fly, Out, Dig, Go/Fly, Out", "Wheel, Drag, Post, Deep Cross, Curl", 
"Corner, Post", "Curl, Dig, Out, Seam, Curl", "Corner, Beneath, Run Fake", 
"Curl, Corner, Chip - Drag, Flat - Left", "Go/Fly, Out, Dig, Slant, Seam", 
"Go/Fly, Post", "Dig, Drag, Out, Go/Fly", "Beneath, Drag, Chip - Curl, Corner, Run Fake", 
"Post, Curl, Curl, Post, Curl", "Dig, Dig, Seam, Go/Fly, Out", 
"Dig, Post, Deep Cross, Chip - Drag", "Flat - Right, Out, Curl, Out", 
"Drag, Corner, Corner, Run Fake", "Fade, Deep Cross, Seam, Chip - Drag", 
"Curl, Comeback, Dig, Run Fake", "Go/Fly, Fade, Dig, Over Ball, Wheel", 
"Corner, Chip - Flat, Curl, Out, Curl", "Slant, Dig, Out, Fade, Curl", 
"Go/Fly, Dig, Out, Go/Fly, Chip - Curl", "Wheel, Whip, Curl, Flat - Left, Whip", 
"Go/Fly, Go/Fly, Seam, Seam, Angle", "Curl, Corner, Flat - Left, Curl, Dig", 
"Seam, Deep Cross, Angle, Go/Fly, Comeback", "Drag, Corner, Post, Dig, Flat - Right", 
"Fade, Seam, Fade, Seam, Curl", "Out, Pick, Out, Deep Cross", 
"Fade, Fade, Seam, Seam", "Slant, Slant, Fade, Out, Out", "Curl, Slant, Flat - Left, Corner, Curl", 
"Post, Go/Fly, Curl, Flat - Left", "Out, Curl, Dig, Flat - Left, Comeback", 
"Drag, Chip - Seam, Out, Post, Curl", "Go/Fly, Out, Chip - Drag, Go/Fly, Out", 
"Dig, Seam, Curl, Dig", "Chip - Drag, Dig, Go/Fly, Dig", "Go/Fly, Swing - Right, Sluggo, Curl, Dig", 
"Go/Fly, Dig, Deep Cross, Drag, Wheel", "Out, Corner, Chip - Flat", 
"Chip - Flat, Post Corner, Corner, Dig", "Out, Go/Fly, Dig, Drag, Curl", 
"Post, Curl, Deep Cross, Out", "Curl, Go/Fly, Go/Fly, Deep Cross, Go/Fly", 
"Deep Cross, Slant, Screen - RB", "Slant, Dig, Corner, Drag", 
"Out, Corner, Drag, Drag", "Go/Fly, Out & Up, Chip - Flat, Dig, Chip - Drag", 
"Deep Cross, Beneath, Corner, Flat - Right, Run Fake", "Go/Fly, Out, Drag, Curl, Go/Fly", 
"Whip, Curl, Post, Post, Curl", "Curl, Swing - Right, Fade, Seam, Seam", 
"Dig, Dig, Post, Go/Fly, Check & Release", "Curl, Seam, Out, Curl, Curl", 
"Out, Out, Out, Out, Curl", "Dig, Dig, Go/Fly", "Curl, Corner, Curl, Corner, Seam", 
"Slant, Slant, Go/Fly, Flat - Right, Curl", "Out, Drag, Slant, Out, Out", 
"Drag, Corner, Corner, Post", "Slant, Slant, Slant, Seam, Flat - Right", 
"Drag, Dig, Corner, Out", "Dig, Out, Dig, Check & Release", "Out, Out, Go/Fly, Curl, Swing - Right", 
"Go/Fly, Curl, Curl, Go/Fly, Curl", "Curl, Seam, Dig, Dig", "Out, Post, Out, Quick", 
"Curl, Swing - Left, Curl", "Post, Slant, Fade, Run Fake", "Go/Fly, Wheel, Screen - TE, Run Fake", 
"Curl, Post Corner, Whip, Corner, Curl", "Fade, Seam, Curl, Fade, Whip", 
"Deep Cross, Go/Fly, Deep Cross", "Curl, Dig, Curl, Curl", "Go/Fly, Screen - Bubble, Screen - RB", 
"Curl, Dig, Deep Cross, Swing - Right, Curl", "Fade, Seam, Out, Corner, Flat - Right", 
"Fade, Chip - Flat, Dig, Curl", "Dig, Deep Cross, Drag, Corner, Swing - Right", 
"Post, Go/Fly, Chip - Flat, Curl, Swing - Right", "Out, Curl, Post, Out, Out", 
"Go/Fly, Fade, Comeback, Check & Release", "Angle, Go/Fly, Deep Cross, Go/Fly, Go/Fly", 
"Swing - Right, Dig, Screen - RB", "Curl, Curl, Swing - Left", 
"Run Fake, Out, Fade, Curl, Curl", "Angle, Out, Curl, Go/Fly, Check & Release", 
"Go/Fly, Swing - Left, Screen - RB", "Screen - Quick, Slant, Screen - Tunnel, Run Fake", 
"Dig, Dig, Dig, Seam, Swing - Left", "Curl, Go/Fly, Dig, Go/Fly", 
"Out, Dig, Out, Curl, Flat - Right", "Screen - Quick, Out, Run Fake", 
"Go/Fly, Slant, Drag, Curl", "Swing - Left, Deep Cross, Flat - Right", 
"Drag, Deep Cross, Deep Cross, Swing - Left, Angle", "Whip, Corner Post, Whip, Corner, Curl", 
"Go/Fly, Out & Up, Curl, Quick, Drag", "Out, Go/Fly, Deep Cross, Dig", 
"Screen - Bubble", "Chip - Flat, Out, Go/Fly, Go/Fly", "Dig, Dig, Curl, Over Ball, Out", 
"Screen - Quick, Screen - Tunnel", "Go/Fly, Out, Go/Fly", "Dig, Fade, Drag", 
"Screen - Quick, Screen - Quick, Run Fake", "Screen - RB, Go/Fly, Curl, Out, Flat - Right", 
"Comeback, Dig, Dig", "Chip - Flat, Drag, Curl, Go/Fly, Angle", 
"Check & Release, Dig, Out & Up, Seam, Out", "Curl, Go/Fly, Post, Comeback, Out", 
"Check & Release, Go/Fly, Seam, Go/Fly, Out", "Fade, Curl, Curl, Comeback, Flat - Right", 
"Out, Post, Whip, Deep Cross, Dig", "Quick, Screen - Bubble", 
"Go/Fly, Curl, Curl, Seam, Curl", "Check & Release, Dig, Curl, Post, Dig", 
"Drag, Curl, Out, Drag, Wheel", "Swing - Left, Corner, Out, Dig, Curl", 
"Swing - Right, Slant, Screen - TE", "Swing - Left, Fade, Screen - RB", 
"Check & Release, Corner, Curl, Out", "Jet Sweep Pass, Run Fake", 
"Drag, Comeback, Dig, Post, Chip - Seam", "Flat - Right, Curl, Curl, Curl, Fade", 
"Chip - Curl, Dig, Out, Slant, Slant", "Run Fake, Beneath, Beneath, Deep Cross, Chip", 
"Slant, Dig, Dig, Slant, Flat - Right", "Post, Post, Quick", 
"Dig, Dig, Curl, Drag, Out", "Curl, Dig, Curl, Seam, Whip", "Chip - Flat, Curl, Go/Fly, Curl, Dig", 
"Run Fake, Deep Cross, Chip - Flat, Corner", "Jet Sweep Pass, Run Fake"
)), row.names = c(NA, -300L), class = c("tbl_df", "tbl", "data.frame"
))

期望的结果

如果搜索仅包含倾斜和渐变的路线,我希望结果如下所示:

GameID      EventID      Route
1234        1234         Slant, Slant, Fade

...然后对于仅包含 Slants 和 Fades 的每个 EventID 依此类推。

创建一个模式以在任一方向进行检测

library(dplyr)
library(stringr)
route.data$Route[6] <- "Fade - Slant"
route.data %>% 
    filter(str_detect(Route, 
        "(\bSlant\b.*\bFade\b)|(\bFade\b.*\bSlant\b)")& 
         str_count(Route, "\w+") == 2)
  GameID EventID        Route
6   2793      60 Fade - Slant 

也可以是多个表达式

route.data %>% 
   filter(str_detect(Route, "\bFade\b"),
         str_detect(Route, "\Slant\b"),
         str_count(Route, "\w+") == 2)
 GameID EventID        Route
6   2793      60 Fade - Slant

或者如果我们只想检查包含预期单词的行,提取单词,检查它们是否是唯一的

library(purrr)
route.data$Route[5] <- "Fade - Slant, Fade"
route.data %>%
 filter(map_lgl(str_extract_all(Route, "\w+"), ~  
       all(unique(.x) %in% c("Fade", "Slant"), na.rm = TRUE)))
   GameID EventID              Route
5   2793      55 Fade - Slant, Fade
6   2793      60       Fade - Slant

数据

route.data <- structure(list(GameID = c(2793L, 2793L, 2793L, 2793L, 2793L, 
2793L, 2793L, 2793L, 2793L, 2793L), EventID = c(15L, 25L, 45L, 
50L, 55L, 60L, 65L, 70L, 85L, 95L), Route = c("Fade - Back Shoulder, Curl, Go/Fly, Out, Curl", 
"Go/Fly, Curl, Dig, Check & Release", 
"Fade, Swing - Left, Slant, Dig, Curl", 
"Jet Sweep Pass, Swing - Right", 
"Corner, Curl, Post, Curl, Slant", 
"Sluggo, Post, Curl, Chip - Flat, Flat - Left", "Go/Fly, Seam, Deep Cross, Dig, Flat - Right", 
"Curl, Dig, Post, Chip - Flat", "Curl, Seam, Curl, Dig, Curl", 
"Screen - RB")), class = "data.frame", row.names = c("1", "2", 
"3", "4", "5", "6", "7", "8", "9", "10"))

您可以使用 separate_rows 将数据拆分为逗号和 select 那些 GameIDEventID 只有 SlantFade 中的值。

library(dplyr)
library(stringr)
library(tidyr)

df %>%
  separate_rows(Route, sep = ',\s*') %>%
  group_by(GameID, EventID) %>%
  filter(all(Route %in% c('Slant', 'Fade'))) %>%
  summarise(Route = toString(Route))

上面会寻找完全匹配,不会匹配像 Fade - Back Shoulder 这样的词。如果您想进行字符串匹配,请使用 str_detectgrepl.

df %>%
  separate_rows(Route, sep = ',\s*') %>%
  group_by(GameID, EventID) %>%
  filter(all(str_detect(Route, 'Slant') & str_detect(Route, 'Fade'))) %>%
  summarise(Route = toString(Route))