after it sees the first occurrence of 0 in FF following a transition, I want
it to ignore all further elements until the next transition.

On Mon, Aug 22, 2011 at 3:58 PM, Edward Patzelt <patze...@umn.edu> wrote:

> Awesome, this is close, couple changes.  Below is full data set for 1
> person.  I want the code to look at the first time it sees a 0 in FF after
> the transition in Rev.  I then want it to test whether bin is also a 0.  If
> and only if this is the first 0 in FF after the transition, and bin = 0,
> then count the number of elements between the transition in Rev and the 0 in
> FF.
>
> structure(list(Rev = c(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, 3L,
> 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 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, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
> 3L, 3L, 3L, 3L, 3L, 3L, 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, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
> 3L, 3L, 3L), FF = 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), bin = c(NA, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0,
> 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,
> 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1,
> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,
> 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
> 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1,
> 1, 1, 1, 1, 1)), .Names = c("Rev", "FF", "bin"), row.names = c(NA,
> -125L), class = "data.frame")
>
>
> On Mon, Aug 22, 2011 at 3:57 PM, Jean V Adams <jvad...@usgs.gov> wrote:
>
>>
>> > Re: [R] Counting Elements Conditionally
>> > Jean V Adams
>> > to:
>> > Edward Patzelt
>> > 08/22/2011 03:53 PM
>> >
>> > > [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: patze...@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
>> >
>>
>> Ooops.  Too hasty in my reply.  I missed the part about bin also being
>> zero.  Try this instead.
>>
>>
>> uR <- unique(df$Rev)
>> uR00 <- uR*100L
>>
>> first.Rev <- match(uR, df$Rev)
>> first.Rev00 <- match(uR00, df$Rev * 100L + df$FF * 10L + df$bin)
>>
>> no.elements <- first.Rev00 - first.Rev + 1
>>
>>
>> Jean
>
>
>
>
> --
> 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: patze...@umn.edu
>
> Please consider the environment before printing this email
> www.psych.umn.edu/research/tricam
>



-- 
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: patze...@umn.edu

Please consider the environment before printing this email
www.psych.umn.edu/research/tricam

        [[alternative HTML version deleted]]

______________________________________________
R-help@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.

Reply via email to