如果共享值并添加另一列的值,则对行求和

Summing rows if shared value and adding up values of another column

我是 R 的业​​余用户,目前正在处理来自假想赌注的数据。我对这些数据有两个问题:

  1. 如果行值共享相同的“日期”和“参与者”值,我该如何求和它们。例如,前两行是同一日期“11-06-2020”和同一参与者“Mike”。我只想有一个单独的行,其中包含此信息并总结了 Points 列值。也就是说,第一行将是 11-06-2020 |迈克 | 2、第二排会是11-06-2020 |保罗 | 4等
  2. 我的第二个问题是关于累加值。也就是说,如果参与者迈克从日期 11-06-2020 获得 2 分,则该值将累加到 12-06-2020。因此,参与者 Miguel 在 2020 年 6 月 12 日的积分栏中的值为 8 (2+6)。 这是数据:
Date <- c("11-06-2020", "11-06-2020", "11-06-2020", "11-06-2020",
          "11-06-2020", "11-06-2020", "12-06-2020", "12-06-2020",
          "12-06-2020", "13-06-2020", "13-06-2020", "13-06-2020",
          "13-06-2020", "13-06-2020", "13-06-2020", "13-06-2020",
          "13-06-2020", "13-06-2020")

Participants <- c("Mike", "Mike", "Paul", "Paul", "Sarah", "Sarah",
                  "Mike", "Paul", "Sarah", "Mike", "Mike", "Mike",
                  "Paul", "Paul", "Paul", "Sarah", "Sarah", "Sarah")

Points <- c(0, 2, 2, 2, 4, 2, 6, 0, 2, 2, 10, 0, 4, 6, 0, 6, 4, 2)

bet <- data.frame(Date, Participants, Points)

# Output from the console:

Date Participants Points
1  11-06-2020         Mike      0
2  11-06-2020         Mike      2
3  11-06-2020         Paul      2
4  11-06-2020         Paul      2
5  11-06-2020        Sarah      4
6  11-06-2020        Sarah      2
7  12-06-2020         Mike      6
8  12-06-2020         Paul      0
9  12-06-2020        Sarah      2
10 13-06-2020         Mike      2
11 13-06-2020         Mike     10
12 13-06-2020         Mike      0
13 13-06-2020         Paul      4
14 13-06-2020         Paul      6
15 13-06-2020         Paul      0
16 13-06-2020        Sarah      6
17 13-06-2020        Sarah      4
18 13-06-2020        Sarah      2

使用dplyr:

问题 1:

bet2 <- count(bet, Date, Participants, wt = Points, name = "Points")
bet2

        Date Participants Points
1 11-06-2020         Mike      2
2 11-06-2020         Paul      4
3 11-06-2020        Sarah      6
4 12-06-2020         Mike      6
5 12-06-2020         Paul      0
6 12-06-2020        Sarah      2
7 13-06-2020         Mike     12
8 13-06-2020         Paul     10
9 13-06-2020        Sarah     12

问题 2:

bet2 |> 
  group_by(Participants) |> 
  mutate(CumuPoints = cumsum(Points)) |>
  ungroup()

  Date       Participants Points CumuPoints
1 11-06-2020 Mike              2          2
2 11-06-2020 Paul              4          4
3 11-06-2020 Sarah             6          6
4 12-06-2020 Mike              6          8
5 12-06-2020 Paul              0          4
6 12-06-2020 Sarah             2          8
7 13-06-2020 Mike             12         20
8 13-06-2020 Paul             10         14
9 13-06-2020 Sarah            12         20