【问题标题】:Using dplyr's mutate based on str_detect基于 str_detect 使用 dplyr 的 mutate
【发布时间】:2019-07-13 02:03:20
【问题描述】:

我正在尝试根据他们是否包含在“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) 的代码,该列将采用“玩家”列中的值并检查它是否在“home_lineup”列中。如果是,则返回“home”列中的值。如果不是,则返回“离开”列值。或者,我可以看到它是“如果在'home_lineup'中,则返回'home',如果在'away_lineup'中,则返回'away'”

使用时,当前代码会返回 away 中的值,这让我相信在尝试使用 'player' 值引用 'home_lineup' 列时存在问题。所有涉及的变量都在字符类中。

【问题讨论】:

  • 您可以在这里使用dput 分享数据吗? dput(season_data_select) 准确地说。此外,如果您还可以显示共享数据的预期输出,它会更容易提供帮助。
  • @RonakShah 您好,我刚刚更新了 Google 电子表格以指示所需的结果(以黄色突出显示)。而且我无法让 dput 为 3.5.3 工作,但该电子表格是我正在使用的数据框的示例。如果您可以将其复制到 excel 文件中并另存为 csv.,它应该可以工作。

标签: r stringr dplyr


【解决方案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])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 2018-09-14
    • 2016-01-28
    • 1970-01-01
    • 2018-10-19
    • 2021-03-13
    • 1970-01-01
    相关资源
    最近更新 更多