
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