在 R 中使用 group by 和条件来计算不同值

问题描述 投票:0回答:1

我有一个包含球队、球员姓名及其得分的数据集:

dat <- data.frame(team = c("new", "new", "old"),
           player = c("bob", "bill", "sue"),
           score = c(1, 0, 3))

我想获取分数 >= 1 的独特玩家的计数。此代码可按团队获取不同玩家的总数:

dat %>% 
  group_by(team) %>%
  summarise(total_players = n_distinct(player))

但是,正如前面提到的,我只想计算得分 >= 1 的玩家。我尝试了下面的代码,但这不起作用:

dat %>% 
  group_by(team) %>% 
  summarise(total_players = n_distinct(ifelse(score >= 1, player, NA)))

注意,解决方案必须在这个

group_by
框架内完成;我不想在汇总语句之前过滤数据框。

r dplyr
1个回答
0
投票

这里有一个替代方案,使用

dplyr
:

dat |> 
  group_by(team) |> 
  filter(score >= 1) |> 
  summarise(total_players = n_distinct(player))

# A tibble: 2 × 2
  team  total_players
  <chr>         <int>
1 new               1
2 old               1
© www.soinside.com 2019 - 2024. All rights reserved.