这是我的 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函数来实现这一点?
我用的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)