我有一个包含球队、球员姓名及其得分的数据集:
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
框架内完成;我不想在汇总语句之前过滤数据框。
这里有一个替代方案,使用
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