[R] Running Total

R. Michael Weylandt <michael.weylandt@gmail.com> michael.weylandt at gmail.com
Mon Mar 5 20:04:39 CET 2012


cumsum(1-x)
cumsum(x==0)


Michael

On Mar 5, 2012, at 1:59 PM, Edward Patzelt <patze003 at umn.edu> wrote:

> Actually in looking at this I need it to only add if a 0 occurs instead of
> a 1.
> 
> On Mon, Mar 5, 2012 at 12:57 PM, jim holtman <jholtman at gmail.com> wrote:
> 
>> cumsum
>> 
>> is probably what you want:
>> 
>>> x <- c(1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L,
>> + 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L,
>> + 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L,
>> + 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L,
>> + 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L,
>> + 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L,
>> + 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L,
>> + 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L)
>>> cbind(x, cumsum(x))
>>      x
>> [1,] 1   1
>> [2,] 1   2
>> [3,] 0   2
>> [4,] 1   3
>> [5,] 1   4
>> [6,] 1   5
>> [7,] 1   6
>> [8,] 1   7
>> [9,] 0   7
>> [10,] 1   8
>> [11,] 0   8
>> [12,] 1   9
>> [13,] 1  10
>> [14,] 1  11
>> [15,] 1  12
>> [16,] 1  13
>> [17,] 0  13
>> 
>> 
>> On Mon, Mar 5, 2012 at 1:51 PM, Edward Patzelt <patze003 at umn.edu> wrote:
>>> I'm am trying to create a vector that has a running total that adds each
>>> time a 1 occurs.  here's the code and data
>>> 
>>> c(1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L,
>>> 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L,
>>> 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L,
>>> 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L,
>>> 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L,
>>> 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L,
>>> 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L,
>>> 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L)
>>> 
>>> 
>>> total <- {};
>>> 
>>> for(i in 1:length(dat$Valid)){
>>> total[i] <- ifelse(dat$Valid[i-1]==1, total[i] + 1, total[i])
>>> }
>>> 
>>> 
>>> Cheers,
>>> 
>>> 
>>> 
>>> --
>>> Edward H. Patzelt
>>> Research Assistant � TRiCAM Lab
>>> University of Minnesota � Psychology/Psychiatry
>>> VA Medical Center
>>> S355 Elliot Hall: 612-626-0072
>>> www.psych.umn.edu/research/tricam
>>> 
>>>       [[alternative HTML version deleted]]
>>> 
>>> 
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>> 
>> 
>> 
>> 
>> --
>> Jim Holtman
>> Data Munger Guru
>> 
>> What is the problem that you are trying to solve?
>> Tell me what you want to do, not how you want to do it.
>> 
> 
> 
> 
> -- 
> Edward H. Patzelt
> Research Assistant � TRiCAM Lab
> University of Minnesota � Psychology/Psychiatry
> VA Medical Center
> S355 Elliot Hall: 612-626-0072
> www.psych.umn.edu/research/tricam
> 
>    [[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list