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