encontrar resposta no tempo anterior

Saudações a todos desta lista. Estou precisando de uma ajuda no sentido de definir uma nova variável em função de outra já existente. No exemplo ilustrativo, tenho uma variável resposta binária (denominada de "resp") observada em quatro indivíduos (id) e medida em quatro momentos distintos (time). Preciso desta resposta no tempo anterior (inicialmente de primeira e segunda ordem). A resposta prévia de primeira ordem (resp_ant1) indica o valor da resposta daquele indivíduo no tempo imediatamente anterior. De forma análoga, tem-se a resposta prévia de segunda ordem (resp_ant2). Neste exemplo com poucas observações fica "fácil" visualizar estas respostas prévias e criar estas novas variáveis. Alguém teria uma sugestão de uma forma mais simples para encontrar as variáveis "resp_ant1" e "resp_ant2"? Desde já agradeço, Maurício id=rep(1:4, each = 4) time=rep(1:4, 4) resp=c(1,1,0,1,0,0,0,1,0,1,1,1,0,1,0,1) resp_ant1=c(NA,1,1,0,NA,0,0,0,NA,0,1,1,NA,0,1,0) resp_ant2=c(NA,NA,1,1,NA,NA,0,0,NA,NA,0,1,NA,NA,0,1)

n <- 1000 x <- (arima.sim(list(ar=.9), n)>0) + 1 ant1 <- c(NA, x[-n]) ant2 <- c(NA, NA, x[-(-1:0+n)]) cor(cbind(x, ant1, ant2), u='p') On Wed, 2013-02-27 at 11:43 -0300, Maurício Lordêlo wrote:
Saudações a todos desta lista. Estou precisando de uma ajuda no sentido de definir uma nova variável em função de outra já existente. No exemplo ilustrativo, tenho uma variável resposta binária (denominada de "resp") observada em quatro indivíduos (id) e medida em quatro momentos distintos (time). Preciso desta resposta no tempo anterior (inicialmente de primeira e segunda ordem). A resposta prévia de primeira ordem (resp_ant1) indica o valor da resposta daquele indivíduo no tempo imediatamente anterior. De forma análoga, tem-se a resposta prévia de segunda ordem (resp_ant2). Neste exemplo com poucas observações fica "fácil" visualizar estas respostas prévias e criar estas novas variáveis. Alguém teria uma sugestão de uma forma mais simples para encontrar as variáveis "resp_ant1" e "resp_ant2"? Desde já agradeço, Maurício
id=rep(1:4, each = 4) time=rep(1:4, 4) resp=c(1,1,0,1,0,0,0,1,0,1,1,1,0,1,0,1) resp_ant1=c(NA,1,1,0,NA,0,0,0,NA,0,1,1,NA,0,1,0) resp_ant2=c(NA,NA,1,1,NA,NA,0,0,NA,NA,0,1,NA,NA,0,1)
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

### complementando porque vc tem individuos... n.times <- 5; n.ind <- 3 dat <- data.frame(expand.grid(time=1:n.times, indiv=1:n.ind)) dat$resp <- as.vector(replicate(n.ind, arima.sim(list(ar=.9),n.times)>0)+0) str(dat) lagFun <- function(x) cbind(ant1 = c(NA, x[-length(x)]), ant2 = c(NA, NA, x[-(-1:0+length(x))])) dat <- data.frame(dat, do.call('rbind', tapply(dat$res, dat$ind, lagFun))) str(dat)

Muito obrigado! Problema resolvido. Abraço 2013/2/27 Elias Teixeira Krainski <eliaskrainski@yahoo.com.br>
### complementando porque vc tem individuos...
n.times <- 5; n.ind <- 3 dat <- data.frame(expand.grid(time=1:n.times, indiv=1:n.ind)) dat$resp <- as.vector(replicate(n.ind, arima.sim(list(ar=.9),n.times)>0)+0) str(dat)
lagFun <- function(x) cbind(ant1 = c(NA, x[-length(x)]), ant2 = c(NA, NA, x[-(-1:0+length(x))]))
dat <- data.frame(dat, do.call('rbind', tapply(dat$res, dat$ind, lagFun))) str(dat)
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
participantes (2)
-
Elias Teixeira Krainski
-
Maurício Lordêlo