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

时间:2017-12-19 19:37:17

标签: r dataframe

    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,反之亦然)。

1 个答案:

答案 0 :(得分: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订单