Execução do comando 'rle'

Bom dia pessoal, Dentro da mesma análise de dados (abaixo) é possível obter as médias de valores (Variável "Nivel ") utilizando o comando "rle" para cada execução do Status e guardar estas informações (lengths, values, timediff, meanNivel ) em outro banco? ### <code r> dat <- read.table(text='Horario Nivel Status " 01/01/2011 00:00" 29 0 " 01/01/2011 00:01" 29 0 " 01/01/2011 00:02" 30 1 " 01/01/2011 00:03" 31 1 " 01/01/2011 00:04" 29 0 " 01/01/2011 00:05" 29 0 " 01/01/2011 00:06" 29 0 " 01/01/2011 00:07" 29 0 " 01/01/2011 00:08" 30 1 " 01/01/2011 00:09" 32 1 " 01/01/2011 00:10" 34 1 " 01/01/2011 00:11" 35 1 " 01/01/2011 00:12" 35 1 " 01/01/2011 00:13" 25 0', head=T, as.is=T) dat$Horario <- as.POSIXlt(dat$Horario, format = '%d/%m/%Y %H:%M') head(dat) res <- do.call(data.frame, rle(dat$Status)) n <- nrow(res) res$ini <- c(1, cumsum(res$lengths[-n])+1) res$fim <- cumsum(res$lengths) res$timeDiff <- with(res, dat[fim,1]-dat[ini,1]) res # lengths values ini fim timeDiff # 1 2 0 1 2 60 secs # 2 2 1 3 4 60 secs # 3 4 0 5 8 180 secs # 4 5 1 9 13 240 secs # 5 1 0 14 14 0 secs Grata, Silvia Patricia

Nesse caso pode usar as posições ini e fim armazenadas no objeto res. res$nivel <- sapply(seq(res), function(x) { sel <- seq(res$ini[x], res$fim[x]) print(mean(dat[sel,2])) }) # lengths values ini fim timeDiff nivel # 1 2 0 1 2 60 secs 29.0 # 2 2 1 3 4 60 secs 30.5 # 3 4 0 5 8 180 secs 29.0 # 4 5 1 9 13 240 secs 33.2 # 5 1 0 14 14 0 secs 25.0 Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W] 2015-04-24 10:08 GMT-04:00 SILVIA PATRICIA BARRETO SANTANA < silpat@ufrb.edu.br>:
Bom dia pessoal,
Dentro da mesma análise de dados (abaixo) é possível obter as médias de valores (Variável "Nivel") utilizando o comando "rle" para cada execução do Status e guardar estas informações (lengths, values, timediff, meanNivel ) em outro banco?
### <code r> dat <- read.table(text='Horario Nivel Status "01/01/2011 00:00" 29 0 "01/01/2011 00:01" 29 0 "01/01/2011 00:02" 30 1 "01/01/2011 00:03" 31 1 "01/01/2011 00:04" 29 0 "01/01/2011 00:05" 29 0 "01/01/2011 00:06" 29 0 "01/01/2011 00:07" 29 0 "01/01/2011 00:08" 30 1 "01/01/2011 00:09" 32 1 "01/01/2011 00:10" 34 1 "01/01/2011 00:11" 35 1 "01/01/2011 00:12" 35 1 "01/01/2011 00:13" 25 0', head=T, as.is=T)
dat$Horario <- as.POSIXlt(dat$Horario, format = '%d/%m/%Y %H:%M') head(dat)
res <- do.call(data.frame, rle(dat$Status)) n <- nrow(res) res$ini <- c(1, cumsum(res$lengths[-n])+1) res$fim <- cumsum(res$lengths) res$timeDiff <- with(res, dat[fim,1]-dat[ini,1])
res
# lengths values ini fim timeDiff # 1 2 0 1 2 60 secs # 2 2 1 3 4 60 secs # 3 4 0 5 8 180 secs # 4 5 1 9 13 240 secs # 5 1 0 14 14 0 secs
Grata,
Silvia Patricia
_______________________________________________ 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)
-
SILVIA PATRICIA BARRETO SANTANA
-
Éder Comunello