> [R] Counting Elements Conditionally
> Edward Patzelt 
> to:
> r-help
> 08/22/2011 02:33 PM
> 
> R -
> 
> I have 3 variables with data below.  Variable "Rev" is a vector that 
changes
> from 1 to 2, 2 to 3, etc....  Variable "FF" is a binary variable with 
1's
> and 0's.  Variable "bin" is a different binary variable with 1's and 
0's.
> 
> I want to calculate the number of elements:
> 
> 1.  Starting with the first element where Rev switches (i.e. 1 to 2)
> 
> 2.  The number of elements between the transition and the first 0 in the
> "FF" vector; *when "bin" is also a 0.*
> *
> *
> 3.  I want to do this for each transition in Rev, but ignore all 
elements
> after calculating #2 until another transition has occurred.
> 
> 
> structure(list(Rev = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
> 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L,
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), FF = c(0L,
> 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L,
> 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L,
> 1L, 1L, 1L, 0L, 1L, 1L, 1L), bin = c(NA, 1, 1, 1, 1, 1, 1, 1,
> 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1,
> 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1)), .Names = c("Rev", "FF", "bin"
> ), row.names = c(NA, -40L), class = "data.frame")
> 
> 
> -- 
> Edward H. Patzelt
> Research Assistant ? TRiCAM Lab
> University of Minnesota ? Psychology/Psychiatry
> VA Medical Center
> Office: S355 Elliot Hall - Twin Cities Campus
> Phone: 612-626-0072  Email: patze003@umn.edu
> 

Try this (I'm assuming your data.frame is called "df":


uR <- unique(df$Rev)
uR0 <- uR*10L

first.Rev <- match(uR, df$Rev)
first.Rev0 <- match(uR0, df$Rev * 10L + df$FF)

no.elements <- first.Rev0 - first.Rev + 1


This starts with Rev=1 (rather than Rev=2), but you can get rid of that by 
dropping the first result ...


no.elements[-1]


Jean

	[[alternative HTML version deleted]]

