
Boa noite a todos. Estou com uma duvida aqui sobre como fazer tabelas com dados de tempo. Bom eu tenho um dataframe que é uma lista de bixos atropelados na estrada. Cada linha é um registro, e tem a especie do bixinho que morreu e a data e outras coisas. Mais ou menos assim:
head(dados) Especie Data 1 Especie 1 2003-06-01 2 Especie 3 2001-06-01 3 Especie 1 2003-07-01 4 Especie 2 2004-02-01 5 Especie 3 2000-07-01 6 Especie 1 2002-06-01
Então tem varias especies, e varios anos de coleta. Eu gostaria de fazer uma tabela pra saber quantos individuos de cada especie morreram por mes, separando os anos. Eu fiz isso usando o comando table(), porem tem alguns meses que não teve registro para nenhuma especie. Dai a minha tabela fica incompleta. Eu gostaria que do periodo inicial dos registros até o final, tivesse todos os meses, mesmo que aparecendo zero para todas as especies. Segue um CMR pra exemplificar melhor o exemplo #gerando dados de exemplo: set.seed(5) datas<-seq(from =as.Date('1/1/2000',format='%d/%m/%Y'),to=as.Date('1/1/2005',format='%d/%m/%Y'),by='month') especies<-paste("Especie",1:3) dados<-data.frame(Especie=NA,Data=as.Date('1/1/2000',format='%d/%m/%Y')) for(i in 1:30) { dados[i,1]<-sample(especies,1) dados[i,2]<-sample(datas,1) } head(dados) #Fazendo a tabela table(format(dados$Data,'%m/%Y'),dados$Especie)
table(format(dados$Data,'%m/%Y'),dados$Especie)
Especie 1 Especie 2 Especie 3 01/2001 1 0 0 01/2002 0 1 0 01/2003 0 1 0 02/2000 1 0 0 02/2001 1 0 0 02/2004 0 1 0 03/2001 0 0 1 03/2003 0 0 1 04/2000 0 1 0 04/2001 1 0 0 04/2004 0 1 0 05/2000 0 0 1 06/2001 0 0 1 06/2002 3 0 0 06/2003 1 0 0 07/2000 0 0 1 07/2003 1 0 0 07/2004 0 1 0 08/2003 0 0 1 09/2000 1 0 0 09/2002 0 0 1 10/2002 0 0 1 11/2002 1 1 0 11/2004 1 1 0 12/2001 0 0 1 12/2004 0 0 1 Por exemplo ali onde destaquei em vermelho, tinha que ter o mes 2 pro ano de 2002 e 2003 Nos dados eu vejo que o trabalho acabou em 2004, dezembro
max(dados$Data) [1] "2004-12-01"
Mas começou em 2000, fevereiro.
min(dados$Data) [1] "2000-02-01"
Ou seja ta faltando muitos meses. Tem como o table completar isso automaticamente? Eu entendo que ele não completou esses meses pois não tem um registro, e eles não entraram como um nivel de fator. Mas eu gostaria que todos os meses, mesmo sem registros tivessem ali. A principio eu estava tentando fazer um vetor com os meses/anos, ai fazer uma tabela com zeros e usar o resultado do table pra preencher. mas imagino que essa não deve ser a solução mais inteligente. Alguém tem alguma sugestão? Abraços Augusto Ribas -- Grato Augusto C. A. Ribas Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056