r - 按 DF 分组,然后使用 dplyr 过滤

标签 r dplyr

这在 dplyr 中可能相对容易。示例问题使用 Lahman 包数据。

哪个玩家在 teamID 下同时管理 NYANYN

# get master player table
players <- Lahman::People

# get manager table
managers <- Lahman::Managers

# merge players to managers
manager_tbl <- 
  managers %>% 
  left_join(players)

我想要获取 playerID 下的玩家的结果,这些玩家在 teamID< 下同时具有 NYANYN.

我该如何去做呢?我猜我需要在 playerID 处分组。 berrayo01 就是答案之一。

最佳答案

按“playerID”分组后,过滤所有同时具有“NYA”和“NYN”的组%in%“teamID”

library(dplyr)
manager_tbl %>%
        group_by(playerID) %>%
         filter(all(c("NYA", "NYN") %in% teamID))
# A tibble: 69 x 35
# Groups:   playerID [4]
#   playerID yearID teamID lgID  inseason     G     W     L  rank plyrMgr birthYear birthMonth birthDay birthCountry birthState birthCity deathYear deathMonth deathDay deathCountry deathState
#   <chr>     <int> <fct>  <fct>    <int> <int> <int> <int> <int> <fct>       <int>      <int>    <int> <chr>        <chr>      <chr>         <int>      <int>    <int> <chr>        <chr>     
# 1 stengca…   1934 BRO    NL           1   153    71    81     6 N            1890          7       30 USA          MO         Kansas C…      1975          9       29 USA          CA        
# 2 stengca…   1935 BRO    NL           1   154    70    83     5 N            1890          7       30 USA          MO         Kansas C…      1975          9       29 USA          CA        
# 3 stengca…   1936 BRO    NL           1   156    67    87     7 N            1890          7       30 USA          MO         Kansas C…      1975          9       29 USA          CA        
# 4 stengca…   1938 BSN    NL           1   153    77    75     5 N            1890          7       30 USA          MO         Kansas C…      1975          9       29 USA          CA        
# 5 stengca…   1939 BSN    NL           1   152    63    88     7 N            1890          7       30 USA          MO         Kansas C…      1975          9       29 USA          CA        
# 6 stengca…   1940 BSN    NL           1   152    65    87     7 N            1890          7       30 USA          MO         Kansas C…      1975          9       29 USA          CA        
# 7 stengca…   1941 BSN    NL           1   156    62    92     7 N            1890          7       30 USA          MO         Kansas C…      1975          9       29 USA          CA        
# 8 stengca…   1942 BSN    NL           1   150    59    89     7 N            1890          7       30 USA          MO         Kansas C…      1975          9       29 USA          CA        
# 9 stengca…   1943 BSN    NL           2   107    47    60     6 N            1890          7       30 USA          MO         Kansas C…      1975          9       29 USA          CA        
#10 stengca…   1949 NYA    AL           1   155    97    57     1 N            1890          7       30 USA          MO         Kansas C…      1975          9       29 USA          CA        
# … with 59 more rows, and 14 more variables: deathCity <chr>, nameFirst <chr>, nameLast <chr>, nameGiven <chr>, weight <int>, height <int>, bats <fct>, throws <fct>, debut <chr>,
#   finalGame <chr>, retroID <chr>, bbrefID <chr>, deathDate <date>, birthDate <date>

关于r - 按 DF 分组,然后使用 dplyr 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58291456/

相关文章:

r - pivot_longer 并返回 NA

r - 如何将不规则时间戳转换为日期格式

r - 使用 lazyeval 进行 mutate 的标准评估

R 使函数对标准和非标准评估都具有鲁棒性

r - 根据条件对列进行分类

r - 将特定列转置为 R 中的行

r - 在 R 代码中显示 Git 版本

r - 从R中的内核密度估计获取值

r - 将 dplyr 的变量选择功能扩展到自定义函数

r - 对每个组做出不同的预测