我是这个网站的新手,这是我的第一篇文章。
我有数据集,我想使用之前的行数据计算每个组的得分,并应用逻辑。我将提供一个基本的例子,我认为这会有所帮助。
数据:
S.no, Group, score1
1, GroupA, 1
2, GroupA, 0
3, GroupA, 1
4, GroupA, 1
5, GroupA, 1
现在我想计算每行的汇总score1
。
对于row5,我想要sum(score1
from rows1到5)/5,i.e。 4/5
同样对于row4,我想要sum({1}}从row1到4)/ 4,I.e。 3/4
我想为每个组的每一行做同样的事情。我现在只为score1
演示了它。
谢谢, 约翰
答案 0 :(得分:1)
您需要cumsum
library(dplyr)
df %>%
group_by(Group) %>%
mutate(score = cumsum(score1)/ row_number())
给出了
Sno Group score1 score
1 1 GroupA 1 1
2 2 GroupA 0 0.5
3 3 GroupA 1 0.667
4 4 GroupA 1 0.75
5 5 GroupA 1 0.8
示例数据:
df <- structure(list(Sno = 1:5, Group = c("GroupA", "GroupA", "GroupA",
"GroupA", "GroupA"), score1 = c(1L, 0L, 1L, 1L, 1L)), class = "data.frame", row.names = c(NA,
-5L))