# [R] reformat records one to several

jim holtman jholtman at gmail.com
Thu Sep 14 00:13:28 CEST 2006

```Try this:

n <- 10  # create some sample data
x <- data.frame(date=1:n, t1=sample(0:3, n, TRUE), t2=sample(0:3, n, TRUE),
t3=sample(0:3, n, TRUE))
x  # print data
result <- lapply(c('t1','t2','t3'), function(i){
xsub <- x[rep(1:nrow(x), x[[i]]),]
xsub\$t1 <- xsub\$t2 <- xsub\$t3 <- 0
xsub[[i]] <- 1
xsub
})
do.call('rbind', result)  # result

On 9/13/06, Steven Van Wilgenburg <slv511 at mail.usask.ca> wrote:
> Hi,
>
> I am a new user of R and am still trying to figure out which statements
> do which functions and am looking for a jump start.
>
> I have a dataset where the data were collected as ten minute counts
> where the number of new individuals within a species was recorded as
> cohorts within 3 separate time intervals within the ten minute count
> persiod. Each row of data therefore follows a format like this:
>
>       Date    Time       Sample        Species t1 t2 t3
> June 5,2006 5:20 AM AUSFAKE01   OVEN    3  0  1
> etc.....
>
> I would like to reformat these data as if the counts recorded only
> individuals and not cohorts, so that the above would look as follows
>
>       Date    Time       Sample        Species t1 t2 t3
> June 5,2006 5:20 AM AUSFAKE01   OVEN    1  0  0
> June 5,2006 5:20 AM AUSFAKE01   OVEN    1  0  0
> June 5,2006 5:20 AM AUSFAKE01   OVEN    1  0  0
> June 5,2006 5:20 AM AUSFAKE01   OVEN    0  0  1
> etc.....
>
> I believe I could do this in SAS with IF, THEN and DO statements,
>
> e.g.
> if t1>0 then
>        do i=1 to t1
>                output Date,Time,Sample,Species,"1","0","0";
> if t2>0 then
>        do i=1 to t2
>                output Date,Time,Sample,Species,"0","1","0";
> if t3>0 then
>        do i=1 to t3
>                output Date,Time,Sample,Species,"0","0","1";
> end;
>
>
> Can anyone point me in the right direction? What is the similar
> statement to DO in R?
>
> Steve VW
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> and provide commented, minimal, self-contained, reproducible code.
>

--
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem you are trying to solve?

```