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