gpt4 book ai didi

r - 基于组仅对值计数一次的 CumSum

转载 作者:行者123 更新时间:2023-12-02 08:08:11 25 4
gpt4 key购买 nike

我目前正在尝试创建一个累积总和列,该列将根据 Game_ID 创建一个累积总和,但一次只计算与 Game_ID 相关的值。例如,玩家 A 在 Game_ID == 1 中拍摄 20 次,在 Game_ID == 2 中拍摄 13 次。对于累计总和,我希望 Shot_Count 值(基于 Game_ID)仅计算一次,尽管出现在 Shot_Count 中列多次。考虑以下数据集:

Name         Game_ID       Shot_Count        CumSum_Shots
Player A 1 20 20
Player B 1 15 15
Player A 1 20 20
Player A 2 13 33 ## (20 + 13)
Player A 2 13 33 ## (20 + 13)
Player B 2 35 50 ## (15 + 35)
Player A 3 30 63 ## (33 + 30)
Player B 3 20 70 ## (50 + 20)
Player A 3 30 63 ## (33 + 30)
Player A 4 12 75 ## (63 + 12)
Player A 4 12 75 ## (63 + 12)
Player B 4 10 80 ## (70 + 10)

请记住还有其他变量使得第 1 行和第 3 行等不重复。我只是想将数据集简化为相关的变量。

我尝试在 data.table 库中使用 cumsum 函数:

library(data.table)
dt[ , CumSum_Shots := cumsum(Shot_Count), by = list(dt$Name, dt$Game_ID)]

但是,这会根据游戏对 Shot_Count 行求和(即 CumSum_Shots 第三行将为 40)。这段代码这样做是有道理的,但我不确定存在什么 data.table 语法以使代码考虑 dt$Game_ID 的唯一值。

最佳答案

唯一,计算,然后合并回来:

dt[unique(dt, by = c('Name', 'Game_ID', 'Shot_Count'))
[, Cum_Shots := cumsum(Shot_Count), by = Name]
, on = .(Name, Game_ID), Cum_Shots := Cum_Shots]

R 是一种肮脏的语言。

关于r - 基于组仅对值计数一次的 CumSum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49563379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com