[R-br] Operações com datas [RESOLVIDO]

ASANTOS alexandresantosbr em yahoo.com.br
Terça Janeiro 17 17:22:14 BRST 2012


Prof. Paulo,

       Funcionou muito obrigado. Segue solução:

### Criando o objeto com datas e a variável climática
x <- as.Date("1994-01-01")
times <- 1:2865
datas <- x+times

dia<-as.POSIXlt(datas)$mday### Extrai os dias
mes<-as.POSIXlt(datas)$mon +1### Extrai os meses
ano<-as.POSIXlt(datas)$year + 1900### Extrai os anos

datas<-as.data.frame(datas)##Cria o vetor data de 01/01/1994 a 5/11/2001
variavel<-rnorm(2865)## Simula a variável medida no dia
dados<-cbind(datas,dia,mes,ano,variavel)##Cria o objeto


quinzena <- factor(ifelse(dia >=1 & dia <=15, "Q1", "Q2"))##Crias os 
dois fatores

dados<-cbind(datas,dia,mes,ano,quinzena,variavel)##Cria um novo objeto


res<-aggregate(dados$variavel, 
by=list(dados$ano,dados$mes,dados$quinzena),mean)###Calcula a média para 
cada quinzena

res2<-res[with(res, order(Group.1, Group.2)), ]## Ordenando os resultados




Em 17-01-2012 16:41, Paulo J Ribeiro Jr escreveu:
> Alexandre
>
> sem fornecer/testar código aqui vai uma sugestao de como eu faria
>
> há funcoes que manipulam datas que permitem voce extrair o dia do mes,
> portanto
>
> 1. criar nova variável (dia)  com dia do mes
> 2. criar um fator (quanzena) dividindo os dias nos niveis
> quinzena<- factor(ifelse(dia>=1&  dia<=15, "Q1", "Q2")
> 3. fazer o que voce precisa cruzando precipitacao etc com a variável
> quinzena
>
> por exemplo
> tapply(precipitacao, quinzena, mean, na.rm=T)
>
>
>
>
>
> Em Ter, 2012-01-17 às 16:16 -0200, ASANTOS escreveu:
>> Boa tarde pessoal,
>>
>>        Tenho dados de temperatura e precipitação diárias de 1994 a 2001
>> em uma determinada fazenda. Preciso retira as médias do dia 1º ao 15º
>> dia e do 15º ao último dia de cada mês, porém estou tendo problemas em
>> trabalhar com as datas, exemplificando através de uma rotina venho fazendo:
>>
>> ### Criando o objeto com datas e a variável climática
>> x<- as.Date("1994-01-01")
>> times<- 1:2865
>> datas<- x+times
>> datas<-as.data.frame(datas)##Cria o vetor data de 01/01/1994 a 5/11/2001
>> variavel<-rnorm(2865)## Simula a variável medida no dia
>> dados<-cbind(datas,variavel)##Cria o objeto
>>
>>
>> ## Cria um vetor temporal a cada 15 dias e adiciona aos dados
>> t<-1:191
>> for(i in 1:length(t)){xv<-sort(rep(t,15))}
>> xv<-as.data.frame(xv)
>> xv<-xv[1:2865,]
>> tp.1994_2001<-cbind(dados,xv)
>> head(tp.1994_2001)
>>
>>
>> ## Calcula as médias a cada 15 dias
>> md<-1:2865
>> res<-NULL
>> for(k in 1:length(md)){Tm<-mean(tp.1994_2001[md[k],2])
>> res<-rbind(res,c(md[k],Tm))
>> }
>>
>> Porém minha abordagem esta incorreta, quando na verdade eu desejo a
>> média do 1° ao 15º dia e do 15º ao último dia do mês, e não a cada 15
>> dias, peguei alguns materiais de séries temporais usando o R, mas todos
>> tratam diretamente das análises e não da manipulação de dados. Alguém
>> saberia que abordagem eu poderia empregar para obter os resultados
>> corretos ou alguma literatura que envolva a manipulação de datas,
>>
>> Obrigado
>>


-- 
Alexandre DOS SANTOS
Engenheiro Florestal, Msc.
Laboratório de Entomologia Florestal
Departamento de Entomologia
Universidade Federal de Lavras
Caixa Postal 3037
37200-000 - Lavras - Minas Gerais - Brasil
Tel: +55 35 92230304



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