R-计算从顶行到底行的数据框列的平均值

标签 r

标题可能不太清楚,因为很难用几句话概括问题,尽管我认为问题不那么难解决。为了解释这个问题,让我共享一个数据框以供引用:

head(df, n = 10)

     team     score 
1       A        10       
2       A         4        
3       A        10        
4       A        16        
5       A        20        
6       B         5
7       B        11         
8       B         8    
9       B        16         
10      B         5       

我想添加第三列,该列计算每个团队的平均得分,随着我在每个团队的行中向下移动时,平均得分会更新,然后在新团队中重置。例如,我希望的输出列如下所示:
head(df, n = 10)

     team     score   avg_score
1       A        10          10 
2       A         4           7
3       A        10           8
4       A        16          10
5       A        20          12
6       B         5           5
7       B        11           8 
8       B         8           8
9       B        16          10 
10      B         5           9


# row1: 10 = 10  
# row2: 7 = (10 + 4)/2  
# row3: 8 = (10 + 4 + 10)/3   
# ... 

使用以下模式,并为新团队重新开始计算。

谢谢,

最佳答案

library("data.table")
setDT(df)[, `:=` (avg_score = cumsum(score)/1:.N), by = team]

或根据@snoram的评论更具可读性
setDT(dt)[, avg_score := cumsum(score)/(1:.N), by = team]

#    team score avg_score
# 1:    A    10        10
# 2:    A     4         7
# 3:    A    10         8
# 4:    A    16        10
# 5:    A    20        12
# 6:    B     5         5
# 7:    B    11         8
# 8:    B     8         8
# 9:    B    16        10
# 10:    B     5         9

关于R-计算从顶行到底行的数据框列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39110618/

相关文章:

r - 无法获得测试数据集的 R 平方

r - knitr kable 将单元格文本格式化为有序列表

r - 根据条件传播到宽格式

r - 将连续刻度从小数更改为百分比

r - 如何使用 tidyr::unite 函数删除 NA?

r - 从多个数据集 R 中提取坐标

html - 在 RMarkdown 中取消粗体和斜体标题

r - 使用乘数 ggplot2 转换轴标签

r - 函数内的计数(dplyr)问题

r - readr read_csv 是否允许在 zip 中指定特定文件