在 dplyr 中使用 R 中的 str_detect 和 case_when

Lau*_*ura 5 r stringr dplyr

这是我的 df:

mydf <- structure(list(Action = c("Passes accurate", "Passes accurate", 
"Passes accurate", "Passes accurate", "Lost balls", "Lost balls (in opp. half)", 
"Passes (inaccurate)", "Interceptions (in opp. half)", "Interceptions", 
"Positional attacks")), row.names = c(NA, -10L), class = c("tbl_df", 
"tbl", "data.frame"))
Run Code Online (Sandbox Code Playgroud)

我有这个向量:passes <- c('Passes','passes','Assists','Crosses')

我正在尝试这样做:mydf %>% mutate(newcol = case_when(str_detect(Action, passes) ~ 'passes'))

但我只有第一行充满了passes. 例如,我应该将前 4 行填充为passes. 还有第七排。我怎样才能用case_when函数来实现这一点?

JAd*_*del 2

我用的str_sub()是这个。

mydf %>% mutate(newcol = case_when(str_sub(Action,1,6) == 'Passes' ~ "passes"))

print(mydf)
   Action                       newcol
   <chr>                        <chr> 
 1 Passes accurate              passes
 2 Passes accurate              passes
 3 Passes accurate              passes
 4 Passes accurate              passes
 5 Lost balls                   NA    
 6 Lost balls (in opp. half)    NA    
 7 Passes (inaccurate)          passes
 8 Interceptions (in opp. half) NA    
 9 Interceptions                NA    
10 Positional attacks           NA 
Run Code Online (Sandbox Code Playgroud)