[R] flag records

Bert Gunter bgunter@4567 @end|ng |rom gm@||@com
Wed Apr 27 00:41:30 CEST 2022


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
> 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