R:按日期对组间的唯一值进行计数

pnwntuvh  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(108)

我有这样的数据框
| 比赛日期|团队介绍|玩家|
| --------------|--------------|--------------|
| 2020-09-12 2020-09-12|利物浦|A|
| 2020-09-12 2020-09-12|利物浦|B|
| 2020-09-12 2020-09-12|利物浦|C|
| 2020-09-12 2020-09-12|曼联|D|
| 2020-09-12 2020-09-12|曼联|E|
| 2020-09-12 2020-09-12|曼联|F|
| 2020-09-12 2020-09-12|阿森纳|G|
| 2020-09-12 2020-09-12|阿森纳|H|
| 2020-09-12 2020-09-12|阿森纳|我|
| 2020-09-15 2020-09-15|利物浦|A|
| 2020-09-15 2020-09-15|利物浦|B|
| 2020-09-15 2020-09-15|利物浦|C|
| 2020-09-15 2020-09-15|曼联|D|
| 2020-09-15 2020-09-15|曼联|E|
| 2020-09-15 2020-09-15|曼联|Q|
| 2020-09-15 2020-09-15|阿森纳|G|
| 2020-09-15 2020-09-15|阿森纳|O|
| 2020-09-15 2020-09-15|阿森纳|我|
| 2020-09-18 2020-09-18 2020-09-18|利物浦|A|
| 2020-09-18 2020-09-18 2020-09-18|利物浦|B|
| 2020-09-18 2020-09-18 2020-09-18|利物浦|C|
| 2020-09-18 2020-09-18 2020-09-18|曼联|M|
| 2020-09-18 2020-09-18 2020-09-18|曼联|H|
| 2020-09-18 2020-09-18 2020-09-18|曼联|Q|
| 2020-09-18 2020-09-18 2020-09-18|阿森纳|G|
| 2020-09-18 2020-09-18 2020-09-18|阿森纳|H|
| 2020-09-18 2020-09-18 2020-09-18|阿森纳|我|
我想数一数与前一场比赛相比,球队中出现了多少唯一值(确切地说是最后一场比赛)。如果玩家出现在第一场比赛中,错过了第二场比赛并出现在第三场比赛中,他应该在第三场比赛中被视为唯一值)。
期望输出
| 比赛日期|团队介绍|独特的球员|
| --------------|--------------|--------------|
| 2020-09-15 2020-09-15|利物浦|0|
| 2020-09-15 2020-09-15|曼联|1|
| 2020-09-15 2020-09-15|阿森纳|1|
| 2020-09-18 2020-09-18 2020-09-18|利物浦|0|
| 2020-09-18 2020-09-18 2020-09-18|曼联|二|
| 2020-09-18 2020-09-18 2020-09-18|阿森纳|1|
有没有什么优雅的方法来做到这一点?

u91tlkcl

u91tlkcl1#

library(tidyr)
library(dplyr)
df |> 
  group_by(Game_date, Team) |>
  summarize(players = list(unique(Player))) |>
  group_by(Team) |>
  arrange(Game_date) |>
  mutate(
    prev = lag(players),
    unique_new_players = mapply(\(x, y) length(setdiff(x, y)), players, prev)
  ) |>
  slice(-1) |>
  ungroup() |>
  select(Game_date, Team, unique_new_players)
# # A tibble: 6 × 3
#   Game_date  Team      unique_new_players
#   <chr>      <chr>                  <int>
# 1 2020-09-15 Arsenal                    1
# 2 2020-09-18 Arsenal                    1
# 3 2020-09-15 Liverpool                  0
# 4 2020-09-18 Liverpool                  0
# 5 2020-09-15 Man_Utd                    1
# 6 2020-09-18 Man_Utd                    2

相关问题