A função tapply() faz uso de uma função sobre sobre um vetor numérico para cada categoria de um fator.
A função aggregate() faz o mesmo, mas permite múltiplos fatores e retorna um data.frame.
## tapply: resumo de uma variavel numerica, separada por niveis de um ou mais fatores?tapply # veja o help dessa função
head(avesc) # se nao tem isso, importe novamente o arquivo aves_cerrado
fisionomia
urubu
carcara
seriema
Ce1
Ce
5
18
6
Ce2
Ce
7
7
6
Ce3
Ce
5
14
4
Ce4
Ce
3
12
5
Ce5
Ce
4
16
4
Ce6
Ce
NA
20
NA
# número de individuos de carcara por fisionomiatapply(avesc$carcara, avesc$fisionomia, sum)
## CC ce Ce CL
## 212 14 291 NA
# numero de individuos de urubo por fisionomiatapply(avesc$urubu, avesc$fisionomia, sum)
## CC ce Ce CL
## 299 13 NA 298
# numero médio de seriemas por localidade+fisionomiatapply(avesc$seriema, avesc$fisionomia, mean)
## CC ce Ce CL
## NA 4.0 NA 5.6
## "Tabelas dinamicas": funcao aggregate## Criar data.frame com altura media dos fustes por especie e por local
# circunferencia máxima por especieob1 <-aggregate(caixeta$cap, by =list(especie = caixeta$especie), FUN = max)class(ob1) # obtenho um data frame
## [1] "data.frame"
head(ob1)
especie
x
Alchornea triplinervia
840
Andira fraxinifolia
340
bombacaceae
380
Cabralea canjerana
720
Callophyllum brasiliensis
1130
Calophyllum brasiliensis
2100
# neste caso também poderia fazer assimob2 <-tapply(caixeta$h, caixeta$especie, max)class(ob2) # mas neste caso nos temos um array (um vetor unidimensional)
# mas se eu quiser por localidade e por especie, preciso usar aggregatecaixeta.alt <-aggregate(caixeta$h, by =list(local = caixeta$local, especie = caixeta$especie), FUN = max)head(caixeta.alt)
local
especie
x
jureia
Alchornea triplinervia
140
retiro
Alchornea triplinervia
100
jureia
Andira fraxinifolia
90
jureia
bombacaceae
150
jureia
Cabralea canjerana
150
chauas
Callophyllum brasiliensis
200
## Vamos calcular a area basal (soma da area de todo os fustes)## calculando a area basal de cada fuste, considerando o fuste um círculo perfeito, poderíamos usar:caixeta$ab <- caixeta$cap^2/4* pi## e agora criamos a planilha, com aggregate, somando as areas basais dos fustescaixeta.2<-aggregate(caixeta$ab, by =list(local = caixeta$local, parcela = caixeta$parcela, especie = caixeta$especie), FUN = sum)class(caixeta.2)