Dear R users,
Please help me with the following problem. I have a data set of the form ´dat´
 
dat <- data.frame(id = seq(1:5), trt=c(0,0,1,1,1),tid=c(0,0,0,0,0),
                  ntid=c(0,0,0,0,0))
 
The function auto is used to generate the autoregressive model:
 
auto <- function(seed,delta,beta,maxt,dat){
set.seed(seed)
 sp <- lapply(split(dat,dat$id),function(x){
 while(x$tid < maxt){
 lambda <- delta*exp(beta*x$trt +0.1*x$ntid)
 wait <- rexp(1,lambda)
 x$tid <- x$tid + wait
  x$ntid <- ifelse(x$tid < maxt, x$ntid+1,x$ntid)
#browser()
  }
 x
})
  mydat <- do.call(rbind,sp)
}
and the result looks like

dat <- auto(seed=1,delta=0.02,beta=-0.3,maxt=112,dat=dat)

 id trt      tid ntid
1  1   0 116.9770    4
2  2   0 144.7484    0
3  3   1 115.9453    1
4  4   1 150.3917    2
5  5   1 127.0123    1
However, at each iteration for unique patients, I wish to see the results. The 
expected result in longitudinal form which I got using browser is
 
dat2
 id trt      tid ntid
1  1   0 37.75909    1
2  1   0 91.21882    2
3  1   0 97.18355    3  
4  1   0 102.3617    4  
5  1   0 116.977     4
6  2   0 144.7484    0  
7  3   1 82.98676    1  
8  3   1 115.9453    1  
9  4   1 64.56155    1  
10 4   1 73.54167    2 
11 4   1 150.3917    2
12 5   1 51.43164    1
13 5   1 127.0123    1
 
Please how do I modify the function 'auto' such that it produce dat2.
 
Thanks
John
        [[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