<div dir="ltr">A função rle() é a função que faltava... e eu tentando reinventar a roda... :)<div><br></div><div>Abs.<br><div><br></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">Em 1 de dezembro de 2014 15:20, Luis G. S. e Silva <span dir="ltr"><<a href="mailto:lgsilvaesilva@gmail.com" target="_blank">lgsilvaesilva@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Jefferson,<div><br></div><div>A função <span style="font-family:arial,sans-serif;font-size:13px;line-height:19.7999992370605px">movsum é uma soma móvel, com janela de tamanho 45. Segue um pequeno exemplo dela:</span></div><div><span style="font-family:arial,sans-serif;font-size:13px;line-height:19.7999992370605px"><br></span></div>movsum(rep(1, 20), 5)<br>[1] NA NA NA NA 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5<br><br>Caso fosse uma média móvel o resultado seria 1 ao invés de 5.<div><br><div>filter(1:9, rep(1, 3), sides = 1)<br>[1] NA NA 6 9 12 15 18 21 24</div><div><br><div>Note que estamos fazendo uma soma acumulada em janelas de tamanho 3. Como as duas primeiras posições não formam uma janela de tamanho 3 é atribuído NA para elas.</div><div><br></div><div>1+2+3 = 6</div><div>2+3+4 = 9</div><div>...</div><div><br></div><div>Na minha resposta anteriormente eu esqueci de modificar a função, ele deveria ser definida com n=45</div><div><br></div><div><span style="font-family:arial,sans-serif;font-size:13px;line-height:19.7999992370605px">movsum <- function(x,n=45){filter(x,rep(</span><span style="font-family:arial,sans-serif;font-size:13px;line-height:19.7999992370605px">1,n), sides=1)}</span><br></div><div><br></div></div></div><div>Espero ter ajudado.</div><div><br></div><div>Um abraço</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">Em 1 de dezembro de 2014 14:57, Rodrigo Coster <span dir="ltr"><<a href="mailto:rcoster@gmail.com" target="_blank">rcoster@gmail.com</a>></span> escreveu:<div><div class="h5"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Jefferson,<div><br></div><div>Talvez a função rle() possa te ajudar a resolver isso. Segue um exemplo:</div><div><br></div><div><div>set.seed(12345)</div><div>dados <- cumsum(rnorm(10000, 0, 10))</div><div><br></div><div>analise <- rle(dados > 100)</div><div>inicio <- cumsum(analise$length) - analise$length + 1<br></div><div><br></div><div>resultado <- data.frame(inicio = inicio, valor = analise$values, seguidos = analise$length)</div><div>subset(resultado, valor == TRUE & seguidos > 45)</div></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2014-12-01 14:33 GMT-02:00 Jefferson Ferreira-Ferreira <span dir="ltr"><<a href="mailto:jecogeo@gmail.com" target="_blank">jecogeo@gmail.com</a>></span>:<div><div><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Marcos e Luis, muito obrigado pelas respostas.<div><br></div><div>No entanto, Luis, fiquei com uma dúvida na tua solução. Se puderes me ajudar te agradeço. </div><div><br></div><div>A função que sugerisse <span style="line-height:19.7999992370605px">movsum <- function(x,n=5){filter(x,rep(</span><span style="line-height:19.7999992370605px">1,n), sides=1)}, se entendi bem, é uma média móvel, certo? Estou com um pouco de dificuldades de entender o que essa função faz. Tu Poderias me explicar cada elemento dessa função, por favor?</span></div><div><span style="line-height:19.7999992370605px"><br></span></div><div><span style="line-height:19.7999992370605px">Caso ela seja uma média móvel, eu de fato, não sei se seria a saída.</span></div><div><span style="line-height:19.7999992370605px"><br></span></div><div><span style="line-height:19.7999992370605px">Vou colocar em termos simples meu objetivo.</span></div><div><br></div><div>inicio.enchente <- min(dados$diajuliano[which(dados$Nivel > 2 <b>por 45 dias consecutivos</b> )]) <br></div><div><br></div><div>Ou seja, o que determinara o dia juliano em que começa minhe enchente é um nível d'água maior que 2cm por 45 dias consecutivos. E é justamente nesse trecho em negrito que estou me debatendo. Sinceramente, acho que a saída não seria uma média móvel.</div><div><br></div><div>O que acham??<br></div><div><br></div><div>Abraços!</div><div><br></div><div><br></div><div><br></div><div><br><br><div class="gmail_quote">Em Mon Dec 01 2014 at 10:16:04, Luis G. S. e Silva <<a href="mailto:lgsilvaesilva@gmail.com" target="_blank">lgsilvaesilva@gmail.com</a>> escreveu:<div><div><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>require(dplyr)</div><div>movsum <- function(x,n=5){filter(x,rep(1,n), sides=1)}</div></div><div dir="ltr"><div><br></div><div>dados <- read.csv2('dado.csv')</div></div><div dir="ltr"><div>dados$Nivel <- as.numeric(as.character(xx$Nivel))</div></div><div dir="ltr"><div><br></div><div>dadosNovo <- tbl_df(dados) %>%</div><div> group_by(Date) %>%</div><div> summarise(NivelMax = max(Nivel, na.rm=TRUE)) %>%</div></div><div dir="ltr"><div> mutate(Ind = as.numeric(NivelMax > 2)) %>%</div><div> arrange(as.Date(Date, "%d/%m/%Y")) %>%</div><div> mutate(DiasEnchente = movsum(Ind))</div></div><div class="gmail_extra"><br><div class="gmail_quote">Em 30 de novembro de 2014 13:10, Marcos Silva <span dir="ltr"><<a href="mailto:marcosfs2006@gmail.com" target="_blank">marcosfs2006@gmail.com</a>></span> escreveu:</div></div><div class="gmail_extra"><div class="gmail_quote"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Ainda não achei uma solução. Mas, caso eu tenha entendido o problema corretamente, cheguei até aqui:<div><br></div><div><div>library(dplyr)</div><div>setwd("E:\\")</div><div>dados <- read.csv2("dado.csv")</div><div>dados$Nivel <- as.numeric(as.character(dados$Nivel))</div><div><br></div><div>dadosNovo <- tbl_df(dados) %>%</div><div> group_by(Date) %>%</div><div> summarise(NivelMax = max(Nivel, na.rm=TRUE)) %>%</div><div> mutate(Ind = ifelse(NivelMax > 2, 1, 0)) %>%</div><div> arrange(as.Date(Date, "%d/%m/%Y"))</div><div><br></div></div><div><div>> head(dadosNovo, 3)</div><div>Source: local data frame [3 x 3]</div><div><br></div><div> Date NivelMax Ind</div><div>1 01/02/2014 1.04 0</div><div>2 02/02/2014 1.04 0</div><div>3 03/02/2014 1.04 0</div><div><br></div></div><div>A estratégia até até aqui foi: construir um novo data frame com o nível máximo em cada dia. Criar uma nova coluna com uma variável indicadora que recebe o valor 1 se o nível no dia é maior que 2.Fiz isso imaginando que poderia ser tranquilo contar as sequencias de 1, mas isso se mostrou não trivial. Bem, pelo menos eu não consegui ainda vislumbrar uma forma de fazer isso. </div><div><br></div><div>Bem, pode ser que alguem tenha uma forma de fazer isso... e identificar os ínícios das enchentes...</div><div><br></div><div>Caso eu consiga avançar, volto aqui.</div><div><br></div><div>Abs. </div><div> </div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">Em 28 de novembro de 2014 17:45, Jefferson Ferreira-Ferreira <span dir="ltr"><<a href="mailto:jecogeo@gmail.com" target="_blank">jecogeo@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>Olá amigos!!<div><br></div><div>Estou com uma questão que não estou sabendo como resolver. Eu tenho uma série de dados de nivel d'água (3 vezes por dia). O que eu quero saber é em qual data começa a enchente. Como o nível sofre algumas "pequenas enchentes" que de fato não representam o real início da enchente, o que eu preciso é saber em qual data começa o seguinte evento: nível > 2cm por 45 dias consecutivos. Isso porque se o nível permanecer por menos de 45 dias consecutivos acima de 2cm eu não estou considerando isso como o início da enchente, mas como uma subida intermitente da água. Outro complicador é que preciso saber essa informação para cada um dos 10 equipamento (datalogger), discriminado na culona que chamei de logger. Ou seja, a data (em dia juliano) do início da enchente para cada logger.</div><div><br></div><div>Em anexo envio os dados de apenas um dos meus aparelhos (logger == 1)</div><div><br></div><div>Alguma ideia?</div>
<br></div></div>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<span><font color="#888888"><br></font></span></blockquote></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div>Marcos F. Silva<br><a href="http://sites.google.com/site/marcosfs2006" target="_blank">http://sites.google.com/site/marcosfs2006</a></div>
</font></span></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div></div><div class="gmail_extra"><br><br clear="all"><div><br></div>-- <br><div><div dir="ltr">Luís Gustavo Silva e Silva</div></div>
</div>
______________________________<u></u>_________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/<u></u>cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-<u></u>guia</a>) e forneça código mínimo reproduzível.</blockquote></div></div></div></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div></div></div><br></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div></div></div><div><div class="h5"><br><br clear="all"><div><br></div>-- <br><div><div dir="ltr">Luís Gustavo Silva e Silva</div></div>
</div></div></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Marcos F. Silva<br><a href="http://sites.google.com/site/marcosfs2006" target="_blank">http://sites.google.com/site/marcosfs2006</a></div>
</div>