[R-br] Ajuda com organização de dados
Thiago V. dos Santos
thi_veloso em yahoo.com.br
Domingo Junho 25 22:30:46 -03 2017
Jackson,
Se a quantidade de medidas que você possui for alta, entao o seu conjunto de dados é um perfeito candidato para pacotes que trabalhem com big data. A minha recomendação é o data.table, porque ele é otimizado para trabalhar com dados de tamanho na casa das dezenas ou centenas de gigabytes.
A seguir eu vou mostrar um exemplo da sumarizacao que você precisa fazer, baseado em dados aleatórios de temperatura gerados no próprio exemplo. Gerei dados de temperatura porque a variabilidade dos dados é mais previsível, mas é só para você ter ideia de como funciona e adaptar para o seu caso.
O truque do código é separar a data em dia, mes e ano, e rodar o comando de sumarização para a frequencia que voce precisa (diaria, mensal etc). Veja o codigo a seguir e reporte de volta caso tenha alguma duvida.
# Cria sequencia de datasidx = seq(as.Date("1961/1/1"), as.Date("2010/12/31"), by = "day")
# Cria sequencia aleatória de temperatura entre 10C e 30Ctemp = runif(10, 30, n=length(idx))
# Organiza tudo em data frame, incluindo data "separada" em ano, mes e diaDF <- data.frame(date=idx, year=as.numeric(format(idx, format="%Y")), month=as.numeric(format(idx, format="%m")), day=as.numeric(format(idx, format="%d")), temp=temp)
# Carrega pacote e converte data frame em data tablelibrary(data.table)DT <- data.table(DF)
# Roda as operações de sumarização que voce precisa# Obviamente substitua mean por sum para somar os seus dados reais.dt1 <- DT[, mean(temp), by = "day"]dt2 <- DT[, mean(temp), by = c("day","month")]
Espero que ajude, -- Thiago V. dos Santos
PhD studentLand and Atmospheric ScienceUniversity of Minnesota
On Sunday, June 25, 2017 3:58 PM, Jackson Rodrigues via R-br <r-br em listas.c3sl.ufpr.br> wrote:
Olá pessoal,
Preciso muito da ajuda de vocês. Tenho que sintetizar dados de precipitação de vários dias e meses em uma única tabela.
No entanto, os dados que possuo estão dispersos em dias e horas diferentes. A maior frequência de observações estão nos dias mais chuvosos enquanto os dias mais secos tem poucas.
Vou colocar aqui um exemplo de tabela como os dados estão e em seguida a tabela que gostaria que se tornasse.
Os dados estão como na tabela abaixo que representa a precipitaçção de 1 único ano. Vejam que a quantidade de observações varia de um dia para outro o ano todo.
| | Dia | Hora | Prec |
| Jan | 1 | 7:00 | 20 |
| 1 | 7:20 | 15 |
| 1 | 7:30 | 5 |
| 2 | 6:00 | 10 |
| 2 | 15:00 | 16 |
| ... | ... | ... |
| 31 | 7:00 | 2 |
| Fev | 1 | 9:00 | 6 |
| 1 | 9:45 | 30 |
| 2 | 6:45 | 12 |
| 2 | 16:00 | 20 |
| 2 | 22:00 | 60 |
| ... | ... | ... |
| 28 | 11:30 | 25 |
| ... | ... | ... | ... |
| Dez | 31 | ... | ... |
Desse jeito fica difícil trabalhar quando for comparar com a precipitação dos outros anos.Assim gostaria de sintetizar toda essa informação em uma única tabela.
Somar tudo que for de Janeiro 1, somar tudo que for de janeiro 2 e assim por diante até o fim do ano gerando a tabela a seguir.
| Mês Dia-> | 1 | 2 | 3 | 4 | ... | 31 | |
| Jan | 40 | 16 | 50 | 66 | ... | 90 | Total precipitado por dia |
| Fev | 60 | 120 | 25 | 45 | ... | 87 |
| ... | ... | ... | ... | ... | ... | ... |
| Dez | 120 | 30 | 26 | 90 | ... | 5 |
A grande questão é como fazê-lo. Preciso de um comando que diga some tudo que for do dia 1 de Jan, some tudo de 2 de Jan e assim sucessivamente.
Alguém poderia me ajudar com isso?
Obrigado
Jackson
-_______________________________________________
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/20170626/41a5f617/attachment-0002.html>
Mais detalhes sobre a lista de discussão R-br