[R-br] Numero de dias acima de um valor

Rodrigo Coster rcoster em gmail.com
Segunda Dezembro 1 14:57:03 BRST 2014


Jefferson,

Talvez a função rle() possa te ajudar a resolver isso. Segue um exemplo:

set.seed(12345)
dados <- cumsum(rnorm(10000, 0, 10))

analise <- rle(dados > 100)
inicio <- cumsum(analise$length) - analise$length + 1

resultado <- data.frame(inicio = inicio, valor = analise$values, seguidos =
analise$length)
subset(resultado, valor == TRUE & seguidos > 45)


2014-12-01 14:33 GMT-02:00 Jefferson Ferreira-Ferreira <jecogeo em gmail.com>:

> Marcos e Luis, muito obrigado pelas respostas.
>
> No entanto, Luis, fiquei com uma dúvida na tua solução. Se puderes me
> ajudar te agradeço.
>
> A função que sugerisse movsum <- function(x,n=5){filter(x,rep(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?
>
> Caso ela seja uma média móvel, eu de fato, não sei se seria a saída.
>
> Vou colocar em termos simples meu objetivo.
>
> inicio.enchente <- min(dados$diajuliano[which(dados$Nivel > 2 *por 45
> dias consecutivos* )])
>
> 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.
>
> O que acham??
>
> Abraços!
>
>
>
>
>
> Em Mon Dec 01 2014 at 10:16:04, Luis G. S. e Silva <
> lgsilvaesilva em gmail.com> escreveu:
>
> require(dplyr)
>> movsum <- function(x,n=5){filter(x,rep(1,n), sides=1)}
>>
>> dados <- read.csv2('dado.csv')
>> dados$Nivel <- as.numeric(as.character(xx$Nivel))
>>
>> dadosNovo <- tbl_df(dados) %>%
>>   group_by(Date) %>%
>>   summarise(NivelMax = max(Nivel, na.rm=TRUE)) %>%
>>   mutate(Ind = as.numeric(NivelMax > 2)) %>%
>>   arrange(as.Date(Date, "%d/%m/%Y")) %>%
>>   mutate(DiasEnchente = movsum(Ind))
>>
>> Em 30 de novembro de 2014 13:10, Marcos Silva <marcosfs2006 em gmail.com>
>> escreveu:
>>
>> Ainda não achei uma solução. Mas, caso eu tenha entendido o problema
>>> corretamente, cheguei até aqui:
>>>
>>> library(dplyr)
>>> setwd("E:\\")
>>> dados <- read.csv2("dado.csv")
>>> dados$Nivel <- as.numeric(as.character(dados$Nivel))
>>>
>>> dadosNovo <- tbl_df(dados) %>%
>>>                 group_by(Date) %>%
>>>                 summarise(NivelMax = max(Nivel, na.rm=TRUE)) %>%
>>>                 mutate(Ind = ifelse(NivelMax > 2, 1, 0)) %>%
>>>                 arrange(as.Date(Date, "%d/%m/%Y"))
>>>
>>> > head(dadosNovo, 3)
>>> Source: local data frame [3 x 3]
>>>
>>>         Date NivelMax Ind
>>> 1 01/02/2014     1.04   0
>>> 2 02/02/2014     1.04   0
>>> 3 03/02/2014     1.04   0
>>>
>>> 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.
>>>
>>> Bem, pode ser que alguem tenha uma forma de fazer isso... e identificar
>>> os ínícios das enchentes...
>>>
>>> Caso eu consiga avançar, volto aqui.
>>>
>>> Abs.
>>>
>>>
>>>
>>> Em 28 de novembro de 2014 17:45, Jefferson Ferreira-Ferreira <
>>> jecogeo em gmail.com> escreveu:
>>>
>>>> Olá amigos!!
>>>>
>>>> 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.
>>>>
>>>> Em anexo envio os dados de apenas um dos meus aparelhos (logger == 1)
>>>>
>>>> Alguma ideia?
>>>>
>>>> _______________________________________________
>>>> R-br mailing list
>>>> R-br em 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.
>>>>
>>>
>>>
>>>
>>> --
>>> Marcos F. Silva
>>> http://sites.google.com/site/marcosfs2006
>>>
>>> _______________________________________________
>>> R-br mailing list
>>> R-br em 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.
>>>
>>
>>
>>
>> --
>> Luís Gustavo Silva e Silva
>>  _______________________________________________
>> R-br mailing list
>> R-br em 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.
>
>
> _______________________________________________
> R-br mailing list
> R-br em 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20141201/c71ca807/attachment.html>


Mais detalhes sobre a lista de discussão R-br