我正在尝试根据数据是否包含在“ home_lineup”或“ away_lineup”字符串中,为数据框中的每个球员分配球队价值。
我使用了str_detect
函数,除此之外,我还没有找到解决问题的替代方法。
此链接中包括该数据帧的快照,该快照将具有season_data_select分配。
library(gsheet)
url <- 'https://docs.google.com/spreadsheets/d/1Z1njK5FxCZgIUaxxoRUVaK8DFNWP4OGthT6kuFHcC7I/edit?usp=sharing'
season_data_select <- gsheet2tbl(url)
https://docs.google.com/spreadsheets/d/1Z1njK5FxCZgIUaxxoRUVaK8DFNWP4OGthT6kuFHcC7I/edit?usp=sharing
library(dplyr)
season_data_select <- season_data_select %>%
mutate(player_team = ifelse(str_detect(player, home_lineup),
home,
away))
理想情况下,我正在寻找将引入新列(player_team)的代码,该列将在“ player”列中获取值并检查其是否在“ home_lineup”列中。如果是,则在“ home”列中返回该值。如果不是,则返回“离开”列值。或者,我可以看到它是“如果在'home_lineup'中,返回'home',如果在'away_lineup'中,则返回'away'”
使用时,当前代码返回的值是away,使我相信尝试使用“ player”值引用“ home_lineup”列时会出现问题。所有涉及的变量都在字符类中。
答案 0 :(得分:1)
由于str_detect
是通过字符串和模式矢量化的,因此我们可以使用它。同样,为了获得包含"home"
和"away"
关键字的新列,我们可以使用相同的str_detect
library(dplyr)
library(stringr)
season_data_select %>%
mutate(player_team = if_else(str_detect(home_lineup, player), home, away),
new = c("away", "home")[str_detect(home_lineup, player) + 1])