# [R] inverse cumsum

Erich Neuwirth erich.neuwirth at univie.ac.at
Wed Jun 18 14:04:13 CEST 2008

```You did not specify exactly what you mean by the inverse of cumsum.
If you want (in pseudocode)
cumsumfromright(a)(k):=(sum(a(i),i=k..length(a))
giving you the sums over the tails of the sequence, then
cumsumfromright <- function(x) rev(cumsum(rev(x)))
is probably what you want.
If you want to find the sequence which has a given sequence a as its
cumsum, you want

firstdiff <- function(x) {
shifted <- c(0,x[1:(length(x)-1)])
x-shifted
}

With this function,

cumsum(firstdiff(x)) == x and
firstdiff(cumsum(x)) == x

for every numeric vector x.

(Ted Harding) wrote:
> On 18-Jun-08 10:17:09, Alfredo Alessandrini wrote:
>> I've a matrix like this:
>>
>> 1985     1.38     1.27     1.84     2.10     0.59     3.47
>> 1986     1.05     1.13     1.21     1.54     0.21     2.14
>> 1987     1.33     1.21     1.77     1.44     0.27     2.85
>> 1988     1.86     1.06     2.33     2.14     0.55     1.40
>> 1989     2.10     0.65     2.74     2.43     1.19     1.45
>> 1990     1.55     0.00     1.59     1.94     0.99     2.14
>> 1991     0.92     0.72     0.50     1.29     0.54     1.22
>> 1992     2.15     1.28     1.23     2.26     1.22     3.17
>> 1993     1.50     0.87     1.68     1.97     0.83     2.55
>> 1994     0.69     0.00     0.76     1.89     0.60     0.87
>> 1995     1.13     1.04     1.19     1.52     1.13     1.78
>>
>> Can I utilise a cumsum inverse? from 1995 to 1985?
>>
>> Thank you,
>> Alfredo
>
> Try on the lines of:
>
>   cumsum(c(1,2,3,4,5))
> # [1]  1  3  6 10 15
>   cumsum(rev(c(1,2,3,4,5)))
> # [1]  5  9 12 14 15
>
> Hoping this helps,
> Ted.
>
> --------------------------------------------------------------------
> E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
> Fax-to-email: +44 (0)870 094 0861
> Date: 18-Jun-08                                       Time: 11:50:40
> ------------------------------ XFMail ------------------------------
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> and provide commented, minimal, self-contained, reproducible code.
>
>

--
Erich Neuwirth, University of Vienna
Faculty of Computer Science
Computer Supported Didactics Working Group