# [R] flag records

Val v@|kremk @end|ng |rom gm@||@com
Wed Apr 27 01:10:17 CEST 2022

```I agree with you on this " one is never too old for school."

My point was,   it is not for homework.

On Tue, Apr 26, 2022 at 6:01 PM Bert Gunter <bgunter.4567 using gmail.com> wrote:
>
> Thanks ... and fair enough.
> However, I disagree -- one is never too old for school.
>
> Cheers,
> Bert Gunter
>
> "The trouble with having an open mind is that people keep coming along
> and sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>
> On Tue, Apr 26, 2022 at 3:57 PM Val <valkremk using gmail.com> wrote:
> >
> > Hi Bert,
> >
> > I am too old for school.
> >
> >
> >
> >
> > On Tue, Apr 26, 2022 at 5:41 PM Bert Gunter <bgunter.4567 using gmail.com> wrote:
> > >
> > > Sounds like homework. We try not to do homework here. See the posting
> > > guide linked below for details.  (If not homework, let us know).
> > >
> > > Bert Gunter
> > >
> > > "The trouble with having an open mind is that people keep coming along
> > > and sticking things into it."
> > > -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
> > >
> > > On Tue, Apr 26, 2022 at 3:17 PM Val <valkremk using gmail.com> wrote:
> > > >
> > > > Hi All,
> > > >
> > > > I want to flag a record based on the following condition.
> > > > The variables  in the sample data are
> > > > State, name, day, text, ddate
> > > >
> > > > Sort the data by State, name, day ddate,
> > > >
> > > > Within  State, name, day
> > > >     assign consecutive number for each row
> > > >     find the date difference between consecutive rows,
> > > >     if the difference is less than 50 days and the text string in
> > > > previous and current rows  are the same then flag the record as X,
> > > > otherwise Y.
> > > >
> > > > Here is  sample data and my attempt,
> > > >
> > > > DF<-read.table(text="State name day text ddate
> > > >   CA A 1 xch 2014/09/16
> > > >   CA A 2 xck 2015/5/29
> > > >   CA A 2 xck 2015/6/18
> > > >   CA A 2 xcm 2015/8/3
> > > >   CA A 2 xcj 2015/8/26
> > > >   FL B 3 xcu  2017/7/23
> > > >   FL B 3 xcl  2017/7/03
> > > >   FL B 3 xmc  2017/7/26
> > > >   FL B 3 xca  2017/3/17
> > > >   FL B 3 xcb  2017/4/8
> > > >   FL B 4 xhh  2017/3/17
> > > >   FL B 4 xhh  2017/1/29",header=TRUE)
> > > >
> > > >   DF\$ddate   <- as.Date (as.Date(DF\$ddate),  format="%Y/%m/%d" )
> > > >   DF3         <- DF[order(DF\$State,DF\$name,DF\$day,xtfrm(DF\$ddate)), ]
> > > >   DF3\$C       <- with(DF3, ave(State, name, day, FUN = seq_along))
> > > >   DF3\$diff    <- with(DF3, ave(as.integer(ddate), State, name, day,
> > > > FUN = function(x) x - x[1]))
> > > >
> > > > I stopped here, how do I evaluate the previous and the current rows
> > > > text string and date difference?
> > > >
> > > > Desired result,
> > > >
> > > >
> > > >      State name day text      ddate C diff flag
> > > > 1     CA    A   1  xch 2014-09-16 1    0     y
> > > > 2     CA    A   2  xck 2015-05-29 1    0      y
> > > > 3     CA    A   2  xck 2015-06-18 2   20     x
> > > > 4     CA    A   2  xcm 2015-08-03 3   66    y
> > > > 5     CA    A   2  xcj 2015-08-26 4   89      y
> > > > 9     FL    B   3  xca 2017-03-17 1    0      y
> > > > 10    FL    B   3  xcb 2017-04-08 2   22    y
> > > > 7     FL    B   3  xcl 2017-07-03 3   108     y
> > > > 6     FL    B   3  xcu 2017-07-23 4  128    y
> > > > 8     FL    B   3  xmc 2017-07-26 5  131   y
> > > > 12    FL    B   4  xhh 2017-01-29 1    0     y
> > > > 11    FL    B   4  xhh 2017-03-17 2   47    x
> > > >
> > > >
> > > >
> > > > Thank you,
> > > >
> > > > ______________________________________________
> > > > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > > > https://stat.ethz.ch/mailman/listinfo/r-help