R Dataframe:添加新列作为某些其他列的总和

问题描述 投票:1回答:1
    Name    Trial#  Result  ResultsSoFar
1   Bob     1       14          14
2   Bob     2       22          36
3   Bob     3       3           39
4   Bob     4       18          57
5   Nancy   2       33          33
6   Nancy   3       87          120

您好,我说上面有数据框。生成“ResultsSoFar”列的最佳方法是什么,该列是该人的结果,包括该试验的结果(Bob的结果不包括Nancy,反之亦然)。

r dataframe
1个回答
5
投票

使用,您可以:

library(data.table)
setDT(df)[, ResultsSoFar:=cumsum(Result), by=Name]
df
    Name Trial. Result ResultsSoFar
1:   Bob      1     14           14
2:   Bob      2     22           36
3:   Bob      3      3           39
4:   Bob      4     18           57
5: Nancy      2     33           33
6: Nancy      3     87          120

注意: 如果Trial#没有排序,你可以做setDT(df)[, ResultsSoFar:=cumsum(Result[order(Trial.)]), by=Name]来获得正确的cumsum订单

© www.soinside.com 2019 - 2024. All rights reserved.