【问题标题】:Summing rows if shared value and adding up values of another column如果共享值,则对行求和并将另一列的值相加
【发布时间】:2021-11-28 10:05:21
【问题描述】:

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

  1. 如何汇总行值,以防它们共享相同的 Date 和 Participants 值。例如,前两行是同一日期“11-06-2020”和同一参与者“Mike”。我只想有一个单独的行,其中包含此信息并总结了 Points 列的值。也就是说,第一行将是 11-06-2020 |迈克 | 2、第二排是11-06-2020 |保罗 | 4等。
  2. 我的第二个问题是关于累加值。也就是说,如果参与者 Mike 从 2020 年 11 月 6 日起获得 2 分,则该值将累加到 2020 年 6 月 12 日。因此,参与者 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

【问题讨论】:

    标签: r date row


    【解决方案1】:

    使用dplyr

    问题一:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多