On Mon, Oct 11, 2010 at 5:25 AM, Bert Jacobs
<bert.jac...@figurestofacts.be> wrote:
> Hi,
>
>
>
> I have the following data frame, where col2 is a startdate and col3 an
> enddate
>
>
>
> COL1      COL2      COL3
>
> A             40462    40482
>
> B             40462    40478
>
>
>
> The above timeframe of 3 weeks I would like to splits it in weeks like this
>
> COL1      COL2      COL3      COL4
>
> A             40462    40468    1
>
> A             40469    40475    1
>
> A             40476    40482    1
>
> B             40462    40468    1
>
> B             40469    40475    1
>
> B             40476    40478    0.428
>
>
>
> Where COL4 is an identifier if the timeframe between COL2 and COL3 is
> exactly 7 days or shorter.
>
> In the example above for B the last split contains only 3 days so the value
> in COL 4 is 3/7

Try this:

DF <- data.frame(COL1 = c("A", "B"), COL2 = 40462, COL3 = c(40482, 40478))

do.call("rbind", by(DF, DF$COL1, function(x) with(x, {
        COL2 <- seq(COL2, COL3, 7)
        COL3 <- pmin(COL2 + 6, COL3)
        COL4 <- (COL3 - COL2 + 1) / 7
        data.frame(COL1, COL2, COL3, COL4)
})))

-- 
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com

______________________________________________
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