7 Sumarização de dados

7.1 Tabelas dinâmicas

A função tapply() calcula alguma funcão sobre um vetor numérico para cada categoria de um fator. Já a função aggregate() faz o mesmo, mas permite múltiplos fatores e sempre retorna um data.frame.

Vamos usar dados de parcelas em caixetais, formações dominadas por Tabebuia cassinoides (Lam.) D.C. (Bignoniaceae), espécie comum da Mata Atlântica nos estados de São Paulo, Minas Gerais, Rio de Janeiro e Espírito Santo. Baixe o arquivo para seu computador e instale-o na sua pasta de trabalho antes de seguir com os comandos abaixo.

caixeta <- read.table("caixeta.csv", sep = ",", header = T)
names(caixeta)
## [1] "local"   "parcela" "arvore"  "fuste"   "cap"     "h"       "especie"
## tapply: resumo de uma variavel numerica, separada por niveis de um ou mais fatores
?tapply # veja o help dessa função
# altura máxima de cada especie
tapply(caixeta$h, INDEX = caixeta$especie, FUN = max)
##    Alchornea triplinervia       Andira fraxinifolia               bombacaceae 
##                       140                        90                       150 
##        Cabralea canjerana Callophyllum brasiliensis  Calophyllum brasiliensis 
##                       150                       200                       160 
##               Cecropia sp      Coussapoa macrocarpa       Coussapoa micropoda 
##                        70                       100                       110 
##      Cryptocaria moschata                Cyathea sp         Eugenia oblongata 
##                       140                        30                       100 
##                  eugenia3                 fabaceae1                  Ficus sp 
##                       110                        70                       130 
##              Gomidesia sp               Ilex durosa                   Ilex sp 
##                       110                       130                        90 
##                   indet.1                   indet.2                   indet.3 
##                       170                        80                        80 
##                   Inga sp        Jacaranda puberula                   jussara 
##                       110                        50                       160 
##                Matayba sp                    Mela 1                    Mela 2 
##                       130                        90                        50 
##         Myrcia sulfiflora               Myrtaceae 3                myrtaceae1 
##                       170                        40                       160 
##                myrtaceae2                myrtaceae4             Pera glabrata 
##                        30                       140                       100 
##                 Persea sp                Pisonia sp                Psidium sp 
##                       130                       110                       120 
##              Simplocos sp               Solanum sp1               Solanum sp2 
##                        90                        60                        70 
##    Syagrus romanzoffianus                Tabebuia 1      Tabebuia cassinoides 
##                        70                        60                       480 
##      Tibouchina nutticeps 
##                        50
# circunferencia media por localidade
tapply(caixeta$cap, INDEX = caixeta$local, FUN = mean)
##   chauas   jureia   retiro 
## 293.6385 404.4813 236.5972
## "Tabelas dinamicas": funcao aggregate
## Criar data.frame com altura media dos fustes por especie e por local
?aggregate # veja o help dessa função
names(caixeta)
## [1] "local"   "parcela" "arvore"  "fuste"   "cap"     "h"       "especie"
# circunferencia máxima por especie
ob1 <- 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 assim
ob2 <- tapply(caixeta$h, caixeta$especie, max)
class(ob2) # mas neste caso nos temos um array (um vetor unidimensional)
## [1] "array"
ob2[1:10]
##    Alchornea triplinervia       Andira fraxinifolia               bombacaceae 
##                       140                        90                       150 
##        Cabralea canjerana Callophyllum brasiliensis  Calophyllum brasiliensis 
##                       150                       200                       160 
##               Cecropia sp      Coussapoa macrocarpa       Coussapoa micropoda 
##                        70                       100                       110 
##      Cryptocaria moschata 
##                       140
# mas se eu quiser por localidade e por especie, preciso usar aggregate
caixeta.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 fustes
caixeta.2 <- aggregate(caixeta$ab, by = list(local = caixeta$local, parcela = caixeta$parcela, especie = caixeta$especie), FUN = sum)
class(caixeta.2)
## [1] "data.frame"
head(caixeta.2)
local parcela especie x
retiro 1 Alchornea triplinervia 53092.92
jureia 2 Alchornea triplinervia 554176.94
retiro 2 Alchornea triplinervia 90949.11
retiro 3 Alchornea triplinervia 230121.66
jureia 4 Alchornea triplinervia 292246.66
jureia 5 Alchornea triplinervia 273397.10

7.2 Tabelas de contagem

Vamos usar utilizar os mesmos dados de caixetas utilizados na seção 7.1. A função table() permite contar valores em fatores e vetores.

caixeta <- read.table("caixeta.csv", sep = ",", header = T)
names(caixeta)
## [1] "local"   "parcela" "arvore"  "fuste"   "cap"     "h"       "especie"
## [8] "ab"
# tem a coluna especie

# podemos resumir quantos individuos tem de cada espécie (considerando que cada linha é um individuo)
table(caixeta$especie)
Alchornea triplinervia Andira fraxinifolia bombacaceae Cabralea canjerana Callophyllum brasiliensis Calophyllum brasiliensis Cecropia sp Coussapoa macrocarpa Coussapoa micropoda Cryptocaria moschata Cyathea sp Eugenia oblongata eugenia3 fabaceae1 Ficus sp Gomidesia sp Ilex durosa Ilex sp indet.1 indet.2 indet.3 Inga sp Jacaranda puberula jussara Matayba sp Mela 1 Mela 2 Myrcia sulfiflora Myrtaceae 3 myrtaceae1 myrtaceae2 myrtaceae4 Pera glabrata Persea sp Pisonia sp Psidium sp Simplocos sp Solanum sp1 Solanum sp2 Syagrus romanzoffianus Tabebuia 1 Tabebuia cassinoides Tibouchina nutticeps
15 4 1 4 7 4 1 3 9 2 2 2 1 1 2 1 8 2 1 1 1 4 2 37 1 63 2 96 3 4 1 1 1 3 2 20 2 1 1 1 10 698 2
# mostra as tres especies mais abundantes
sort(table(caixeta$especie), decreasing = T)[1:3]
Tabebuia cassinoides Myrcia sulfiflora Mela 1
698 96 63
# quantos individuos por localidade?
table(caixeta$local)
chauas jureia retiro
426 241 360
# especie por localidade
tb <- table(caixeta$especie, caixeta$local)
head(tb, 3) # mostra as tres primeiras linhas
chauas jureia retiro
Alchornea triplinervia 0 3 12
Andira fraxinifolia 0 4 0
bombacaceae 0 1 0
# tabela de presenca e ausencia de especie por localidade
tb <- table(caixeta$especie, caixeta$local)
# quem tem mais de 0 individuos está presente
# portanto, substituo por 1
tb[tb > 0] <- 1
head(tb)
chauas jureia retiro
Alchornea triplinervia 0 1 1
Andira fraxinifolia 0 1 0
bombacaceae 0 1 0
Cabralea canjerana 0 1 0
Callophyllum brasiliensis 1 0 0
Calophyllum brasiliensis 0 1 0
# sendo assim, posso ver o numero de especie por localidade aplicando a suma das linha que tem 1 para cada coluna
apply(tb, 2, sum)
## chauas jureia retiro 
##     13     22     13

7.3 Lógica da junção de tabelas

Unir tabelas é uma prática corriqueira com bases de dados. É comum termos dados relacionados em tabelas diferentes, recurso que minimiza a entrada de redundância e portanto de erros nos nossos dados.

É frequente também a necessidade de ter esses dados reunidos em uma só tabela. Para unir tabelas, é necessário que duas tabelas diferentes possuam uma coluna em comum, a quem vamos chamar de identificador. Vamos criar aqui uma situação artificial com os dados iris, mas imagine uma situação mais complexa com muitos dados.

# uma tabela com os nomes das especies
spp <- unique(data.frame(
  GENUS = "Iris",
  SPECIES = iris$Species,
  stringsAsFactors = F
))
spp$fullname <- paste(spp$GENUS, spp$SPECIES)
spp
GENUS SPECIES fullname
1 Iris setosa Iris setosa
51 Iris versicolor Iris versicolor
101 Iris virginica Iris virginica

Vamos adicionar uns dados ao objeto spp. Para isso, utilizaremos o pacote taxize (Chamberlain et al. 2020) para buscar nomes de espécies na rede. Para fazer uso da função tp_search(), é necessário ter uma chave API, que nada mais é que uma senha para que você possa acessar serviços na rede sem a necessidade de um navegador. Nós utilizamos uma chave obtida junto ao Tropicos.org, base de dados do Jardim Botânico do Missouri (Missouri Botanical Garden). O pacote taxize oferece uma função chamada use_tropicos() que abre o navegador na página de solicitação da chave API. Você pode executar o comando, preencher o formulário e aguardar por sua chave:

use_tropicos()

Para este exemplo, guardamos nossa chave API em um objeto chamado tropicos_key que, por motivos óbvios, não mostraremos aqui o que ele guarda:

# install.packages("taxize")
library("taxize") # instale se nao tiver
sppinfo <- sapply(spp$fullname, tp_search, key = tropicos_key, type = "exact")

O resultado de nossa pesquisa foi estocado no objeto sppinfo. Vamos pegar as colunas obtidas para todos os nomes:

keys <- table(unlist(lapply(sppinfo, names)))
keys <- names(keys[keys == length(sppinfo)])
keys
##  [1] "author"                    "displaydate"              
##  [3] "displayreference"          "family"                   
##  [5] "nameid"                    "nomenclaturestatusname"   
##  [7] "rankabbreviation"          "scientificname"           
##  [9] "scientificnamewithauthors" "totalrows"

Juntemos agora tudo em um único data.frame:

sppinfo <- as.data.frame(do.call(mapply, c(FUN = c, lapply(sppinfo, `[`, keys))), stringsAsFactors = F)
sppinfo
author displaydate displayreference family nameid nomenclaturestatusname rankabbreviation scientificname scientificnamewithauthors totalrows
Iris setosa Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1
Iris versicolor1 L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2
Iris versicolor2 Thunb. 1784 Fl. Jap. 34 Iridaceae 100206951 Illegitimate sp. Iris versicolor Iris versicolor Thunb. 2
Iris virginica L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1

Vamos excluir os nomes ilegítimos:

sppinfo <- sppinfo[-grep("illeg", sppinfo$nomenclaturestatusname, ignore.case = T), ]
sppinfo
author displaydate displayreference family nameid nomenclaturestatusname rankabbreviation scientificname scientificnamewithauthors totalrows
Iris setosa Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1
Iris versicolor1 L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2
Iris virginica L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1

Vamos agora criar um identificador compartilhado entre as tabelas:

sppinfo$Species <- gsub("Iris ", "", sppinfo$scientificname)

Vamos bagunçar a ordem dos dados em sppinfo para mostrar como se procede a junção de tabelas:

set.seed(4857)
sppinfo <- sppinfo[sample(1:3), ]
rownames(sppinfo) <- sppinfo$Species

Agora temos dois conjuntos de dados que em comum possuem a coluna Species, mas apresentam linhas diferentes:

sppinfo
author displaydate displayreference family nameid nomenclaturestatusname rankabbreviation scientificname scientificnamewithauthors totalrows Species
versicolor L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
virginica L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
setosa Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
4.6 3.1 1.5 0.2 setosa
5.0 3.6 1.4 0.2 setosa
5.4 3.9 1.7 0.4 setosa

Suponhamos que você queira adicionar à tabela iris uma coluna com informação que está na tabela sppinfo. Podemos pensar em duas maneiras de executar esta ação.

7.3.1 Maneira 1 - função match()

Pegaremos as linhas da tabela sppinfo com correspondência a cada linha da tabela iris. Para isso, devemos ter o índice da tabela sppinfo segundo o valor da coluna Species, que é o identificador em comum entre as duas tabelas:

idxinfo <- match(iris$Species, sppinfo$Species)

Guardamos esta correspondência no vetor idxinfo, que possui o mesmo comprimento que o número de linhas que iris e contem o número das linhas (os índices!) da tabela sppinfo:

# assim, seguindo indexacao numerica eu posso pegar informacoes da tabela sppinfo e colocar na tabela iris
iris$speciesComAutor <- sppinfo$scientificnamewithauthors[idxinfo]
head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species speciesComAutor
5.1 3.5 1.4 0.2 setosa Iris setosa Pall. ex Link
4.9 3.0 1.4 0.2 setosa Iris setosa Pall. ex Link
4.7 3.2 1.3 0.2 setosa Iris setosa Pall. ex Link
4.6 3.1 1.5 0.2 setosa Iris setosa Pall. ex Link
5.0 3.6 1.4 0.2 setosa Iris setosa Pall. ex Link
5.4 3.9 1.7 0.4 setosa Iris setosa Pall. ex Link

Agora, vamos unir as duas tabelas:

novoiris <- cbind(iris, sppinfo[idxinfo, ])
head(novoiris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species speciesComAutor author displaydate displayreference family nameid nomenclaturestatusname rankabbreviation scientificname scientificnamewithauthors totalrows Species
setosa 5.1 3.5 1.4 0.2 setosa Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.1 4.9 3.0 1.4 0.2 setosa Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.2 4.7 3.2 1.3 0.2 setosa Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.3 4.6 3.1 1.5 0.2 setosa Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.4 5.0 3.6 1.4 0.2 setosa Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.5 5.4 3.9 1.7 0.4 setosa Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa

7.3.2 Maneira 2 - índices nominais

A tabela sppinfo contem nomes de linhas que correspondem aos valores que estão na coluna iris$Species. Portanto, para fazer a mesma coisa que fizemos na maneira 1, nós poderíamos simplesmente filtrar através dos nomes das linhas da tabela sppinfo:

iris$speciesComAutor <- sppinfo[iris$Species, ]$scientificnamewithauthors
# juntando as duas tabelas  completas
novoiris <- cbind(iris, sppinfo[iris$Species, ])
novoiris
Sepal.Length Sepal.Width Petal.Length Petal.Width Species speciesComAutor author displaydate displayreference family nameid nomenclaturestatusname rankabbreviation scientificname scientificnamewithauthors totalrows Species
versicolor 5.1 3.5 1.4 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.1 4.9 3.0 1.4 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.2 4.7 3.2 1.3 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.3 4.6 3.1 1.5 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.4 5.0 3.6 1.4 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.5 5.4 3.9 1.7 0.4 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.6 4.6 3.4 1.4 0.3 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.7 5.0 3.4 1.5 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.8 4.4 2.9 1.4 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.9 4.9 3.1 1.5 0.1 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.10 5.4 3.7 1.5 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.11 4.8 3.4 1.6 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.12 4.8 3.0 1.4 0.1 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.13 4.3 3.0 1.1 0.1 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.14 5.8 4.0 1.2 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.15 5.7 4.4 1.5 0.4 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.16 5.4 3.9 1.3 0.4 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.17 5.1 3.5 1.4 0.3 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.18 5.7 3.8 1.7 0.3 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.19 5.1 3.8 1.5 0.3 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.20 5.4 3.4 1.7 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.21 5.1 3.7 1.5 0.4 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.22 4.6 3.6 1.0 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.23 5.1 3.3 1.7 0.5 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.24 4.8 3.4 1.9 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.25 5.0 3.0 1.6 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.26 5.0 3.4 1.6 0.4 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.27 5.2 3.5 1.5 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.28 5.2 3.4 1.4 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.29 4.7 3.2 1.6 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.30 4.8 3.1 1.6 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.31 5.4 3.4 1.5 0.4 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.32 5.2 4.1 1.5 0.1 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.33 5.5 4.2 1.4 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.34 4.9 3.1 1.5 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.35 5.0 3.2 1.2 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.36 5.5 3.5 1.3 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.37 4.9 3.6 1.4 0.1 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.38 4.4 3.0 1.3 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.39 5.1 3.4 1.5 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.40 5.0 3.5 1.3 0.3 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.41 4.5 2.3 1.3 0.3 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.42 4.4 3.2 1.3 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.43 5.0 3.5 1.6 0.6 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.44 5.1 3.8 1.9 0.4 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.45 4.8 3.0 1.4 0.3 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.46 5.1 3.8 1.6 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.47 4.6 3.2 1.4 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.48 5.3 3.7 1.5 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
versicolor.49 5.0 3.3 1.4 0.2 setosa Iris versicolor L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600268 No opinion sp. Iris versicolor Iris versicolor L. 2 versicolor
virginica 7.0 3.2 4.7 1.4 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.1 6.4 3.2 4.5 1.5 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.2 6.9 3.1 4.9 1.5 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.3 5.5 2.3 4.0 1.3 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.4 6.5 2.8 4.6 1.5 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.5 5.7 2.8 4.5 1.3 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.6 6.3 3.3 4.7 1.6 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.7 4.9 2.4 3.3 1.0 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.8 6.6 2.9 4.6 1.3 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.9 5.2 2.7 3.9 1.4 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.10 5.0 2.0 3.5 1.0 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.11 5.9 3.0 4.2 1.5 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.12 6.0 2.2 4.0 1.0 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.13 6.1 2.9 4.7 1.4 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.14 5.6 2.9 3.6 1.3 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.15 6.7 3.1 4.4 1.4 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.16 5.6 3.0 4.5 1.5 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.17 5.8 2.7 4.1 1.0 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.18 6.2 2.2 4.5 1.5 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.19 5.6 2.5 3.9 1.1 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.20 5.9 3.2 4.8 1.8 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.21 6.1 2.8 4.0 1.3 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.22 6.3 2.5 4.9 1.5 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.23 6.1 2.8 4.7 1.2 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.24 6.4 2.9 4.3 1.3 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.25 6.6 3.0 4.4 1.4 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.26 6.8 2.8 4.8 1.4 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.27 6.7 3.0 5.0 1.7 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.28 6.0 2.9 4.5 1.5 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.29 5.7 2.6 3.5 1.0 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.30 5.5 2.4 3.8 1.1 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.31 5.5 2.4 3.7 1.0 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.32 5.8 2.7 3.9 1.2 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.33 6.0 2.7 5.1 1.6 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.34 5.4 3.0 4.5 1.5 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.35 6.0 3.4 4.5 1.6 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.36 6.7 3.1 4.7 1.5 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.37 6.3 2.3 4.4 1.3 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.38 5.6 3.0 4.1 1.3 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.39 5.5 2.5 4.0 1.3 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.40 5.5 2.6 4.4 1.2 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.41 6.1 3.0 4.6 1.4 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.42 5.8 2.6 4.0 1.2 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.43 5.0 2.3 3.3 1.0 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.44 5.6 2.7 4.2 1.3 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.45 5.7 3.0 4.2 1.2 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.46 5.7 2.9 4.2 1.3 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.47 6.2 2.9 4.3 1.3 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.48 5.1 2.5 3.0 1.1 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
virginica.49 5.7 2.8 4.1 1.3 versicolor Iris virginica L. L. 1753 Sp. Pl. 1: 39 Iridaceae 16600544 No opinion sp. Iris virginica Iris virginica L. 1 virginica
setosa 6.3 3.3 6.0 2.5 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.1 5.8 2.7 5.1 1.9 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.2 7.1 3.0 5.9 2.1 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.3 6.3 2.9 5.6 1.8 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.4 6.5 3.0 5.8 2.2 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.5 7.6 3.0 6.6 2.1 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.6 4.9 2.5 4.5 1.7 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.7 7.3 2.9 6.3 1.8 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.8 6.7 2.5 5.8 1.8 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.9 7.2 3.6 6.1 2.5 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.10 6.5 3.2 5.1 2.0 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.11 6.4 2.7 5.3 1.9 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.12 6.8 3.0 5.5 2.1 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.13 5.7 2.5 5.0 2.0 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.14 5.8 2.8 5.1 2.4 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.15 6.4 3.2 5.3 2.3 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.16 6.5 3.0 5.5 1.8 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.17 7.7 3.8 6.7 2.2 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.18 7.7 2.6 6.9 2.3 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.19 6.0 2.2 5.0 1.5 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.20 6.9 3.2 5.7 2.3 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.21 5.6 2.8 4.9 2.0 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.22 7.7 2.8 6.7 2.0 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.23 6.3 2.7 4.9 1.8 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.24 6.7 3.3 5.7 2.1 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.25 7.2 3.2 6.0 1.8 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.26 6.2 2.8 4.8 1.8 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.27 6.1 3.0 4.9 1.8 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.28 6.4 2.8 5.6 2.1 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.29 7.2 3.0 5.8 1.6 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.30 7.4 2.8 6.1 1.9 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.31 7.9 3.8 6.4 2.0 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.32 6.4 2.8 5.6 2.2 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.33 6.3 2.8 5.1 1.5 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.34 6.1 2.6 5.6 1.4 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.35 7.7 3.0 6.1 2.3 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.36 6.3 3.4 5.6 2.4 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.37 6.4 3.1 5.5 1.8 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.38 6.0 3.0 4.8 1.8 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.39 6.9 3.1 5.4 2.1 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.40 6.7 3.1 5.6 2.4 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.41 6.9 3.1 5.1 2.3 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.42 5.8 2.7 5.1 1.9 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.43 6.8 3.2 5.9 2.3 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.44 6.7 3.3 5.7 2.5 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.45 6.7 3.0 5.2 2.3 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.46 6.3 2.5 5.0 1.9 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.47 6.5 3.0 5.2 2.0 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.48 6.2 3.4 5.4 2.3 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa
setosa.49 5.9 3.0 5.1 1.8 virginica Iris setosa Pall. ex Link Pall. ex Link 1820 Jahrb. Gewächsk. 1(3): 71 Iridaceae 16600262 No opinion sp. Iris setosa Iris setosa Pall. ex Link 1 setosa

7.4 Junção de tabelas utilizando funções4

O pacote base do R fornece uma função que executa essa ação, chamada merge(). Porém, há alguns tipos de junções não podem ser executados com esta função, o que nos levará ao uso de vetores lógicos em conjunto com a função interaction(). Daremos exemplos com essas duas novas maneiras.

7.4.1 Dados para nossa prática

Utilizaremos três tabelas para esta prática:

  1. O data.frame tab1 possui nomes de famílias, gêneros e epítetos específicos de algumas angiospermas:
familia <- c("Burseraceae", "Solanaceae", "Sapindaceae", "Rubiaceae", "Lauraceae")
generos <- c("Protium", "Trattinnickia", "Dacryodes", "Duckeodendron", "Markea", "Solanum", "Allophylastrum", "Cupania", "Thinouia", "Psychotria", "Duroia", "Cinchona", "Ocotea", "Licaria", "Rhodostemonodaphne", "Anisophyllea", "Freziera")
epitetos <- c("aracouchini", "burserifolia", "edilsonii", "cestroides", "ulei", "cyathophorum", "frutescens", "rubiginosa", "myriantha", "viridis", "eriopila", "amazonica", "delicata", "aureosericea", "recurva", "manausensis", "carinata")
tab1 <- data.frame(familia = c(rep(familia, each = 3), "Anisophylleaceae", "Pentaphylacaceae"), genero = generos, epiteto = epitetos, stringsAsFactors = FALSE)
Tabela 7.1: Tabela 1
familia genero epiteto
Burseraceae Protium aracouchini
Burseraceae Trattinnickia burserifolia
Burseraceae Dacryodes edilsonii
Solanaceae Duckeodendron cestroides
Solanaceae Markea ulei
Solanaceae Solanum cyathophorum
Sapindaceae Allophylastrum frutescens
Sapindaceae Cupania rubiginosa
Sapindaceae Thinouia myriantha
Rubiaceae Psychotria viridis
Rubiaceae Duroia eriopila
Rubiaceae Cinchona amazonica
Lauraceae Ocotea delicata
Lauraceae Licaria aureosericea
Lauraceae Rhodostemonodaphne recurva
Anisophylleaceae Anisophyllea manausensis
Pentaphylacaceae Freziera carinata
  1. O data.frame tab2 contem um conjunto pequeno com alguns nomes de famílias, gêneros, e o nome de seus respectivos clados acima dos nomes de ordens segundo o APG (2016):
familia2 <- c("Burseraceae", "Solanaceae", "Sapindaceae", "Rubiaceae", "Annonaceae")
generos2 <- c("Protium", "Duckeodendron", "Thinouia", "Psychotria", "Guatteria")
clado <- c("Malvids", "Lamiids", "Malvids", "Lamiids", "Magnoliids")
tab2 <- data.frame(familia = familia2, genero = generos2, clado = clado, stringsAsFactors = FALSE)
Tabela 7.2: Tabela 2
familia genero clado
Burseraceae Protium Malvids
Solanaceae Duckeodendron Lamiids
Sapindaceae Thinouia Malvids
Rubiaceae Psychotria Lamiids
Annonaceae Guatteria Magnoliids
  1. O data.frame tab3 corresponde à tabela 2, tab2, sem as famílias Solanaceae e Rubiaceae:
tab3 <- subset(tab1, familia %in% c("Burseraceae", "Sapindaceae"))
Tabela 7.3: Tabela 3
familia genero epiteto
Burseraceae Protium aracouchini
Burseraceae Trattinnickia burserifolia
Burseraceae Dacryodes edilsonii
Sapindaceae Allophylastrum frutescens
Sapindaceae Cupania rubiginosa
Sapindaceae Thinouia myriantha

7.4.2 Maneira 3 - função merge()

O básico para entender a função merge() é saber que existem dois argumentos, x e y, que correspondem aos data.frames de entrada. Quando unimos tabelas, existem junções que adicionam variáveis, e junções que filtram variáveis. Vamos ver abaixo 4 tipos da primeira ( junção interna, junção à esquerda, junção à direita, junção total), e dois tipos desta última ( semijunção e antijunção).

7.4.2.1 Junção interna

Ao juntarmos tabelas x e y, temos todas as linhas de x em que há valores em comum com y, e todas as colunas de x e y. Se houver múltiplas correspondências entre x e y, todas as combinações retornam.

Em nosso exemplo, vamos unir as tabelas 1 e 2. Ambas possuem em comum os identificadores familia e genero. Para facilitar o entendimento, vamos verificar primeiro cada tabela com cores para checar as correspondências entre x e y nas variáveis em comum:

Tabela 7.4: Tabela 1
familia genero epiteto
Burseraceae Protium aracouchini
Burseraceae Trattinnickia burserifolia
Burseraceae Dacryodes edilsonii
Solanaceae Duckeodendron cestroides
Solanaceae Markea ulei
Solanaceae Solanum cyathophorum
Sapindaceae Allophylastrum frutescens
Sapindaceae Cupania rubiginosa
Sapindaceae Thinouia myriantha
Rubiaceae Psychotria viridis
Rubiaceae Duroia eriopila
Rubiaceae Cinchona amazonica
Lauraceae Ocotea delicata
Lauraceae Licaria aureosericea
Lauraceae Rhodostemonodaphne recurva
Anisophylleaceae Anisophyllea manausensis
Pentaphylacaceae Freziera carinata
Tabela 7.4: Tabela 2
familia genero clado
Burseraceae Protium Malvids
Solanaceae Duckeodendron Lamiids
Sapindaceae Thinouia Malvids
Rubiaceae Psychotria Lamiids
Annonaceae Guatteria Magnoliids

Reparem que os valores em que há correspondência entre x e y estão coloridos de amarelo; para os em que não há correspondência, estão coloridos de vermelho. Agora, executemos a junção das duas tabelas:

merge(x = tab1, y = tab2)
familia genero epiteto clado
Burseraceae Protium aracouchini Malvids
Rubiaceae Psychotria viridis Lamiids
Sapindaceae Thinouia myriantha Malvids
Solanaceae Duckeodendron cestroides Lamiids

Vejam que houve a incorporação dos valores da coluna epiteto, presente apenas na tabela 2, em que há correspondência entre as tabelas 1 e 2. É importante notar que as famílias Lauraceae, Anisophylleaceae, e Pentaphylacaceae ficaram de fora, pois não são encontradas na tabela y, isto é, a tabela 2, assim como seus respectivos gêneros e epítetos associados a estes. Gêneros presentes na tabela 1 de famílias em comum entre ambas as tabelas também não foram incorporados nessa junção, pois nãp encontram correspondência na tabela 2: Dacryodes, Trattinnickia, Markea, Solanum, Allophylastrum, Cupania, Duroia, Cinchona. Revejam o conceito de junção interna para entender o porquê desse acontecimento.

7.4.2.2 Junção à esquerda

Ao juntarmos tabelas x e y, temos todas as linhas de x, e todas as colunas de x e y. Linhas em x sem correspência em y terão valores NA adicionados nas novas colunas. Se houver múltiplas correspondências entre x e y, todas as combinações retornam.

Continuaremos utilizando as tabelas 1 e 2. Como mostrado anteriormente, ambas possuem em comum os identificadores familia e genero. Chequemos novamente as cores das correspondências dentro de cada identificador, coloridas em amarelo:

Tabela 7.5: Tabela 1
familia genero epiteto
Burseraceae Protium aracouchini
Burseraceae Trattinnickia burserifolia
Burseraceae Dacryodes edilsonii
Solanaceae Duckeodendron cestroides
Solanaceae Markea ulei
Solanaceae Solanum cyathophorum
Sapindaceae Allophylastrum frutescens
Sapindaceae Cupania rubiginosa
Sapindaceae Thinouia myriantha
Rubiaceae Psychotria viridis
Rubiaceae Duroia eriopila
Rubiaceae Cinchona amazonica
Lauraceae Ocotea delicata
Lauraceae Licaria aureosericea
Lauraceae Rhodostemonodaphne recurva
Anisophylleaceae Anisophyllea manausensis
Pentaphylacaceae Freziera carinata
Tabela 7.5: Tabela 2
familia genero clado
Burseraceae Protium Malvids
Solanaceae Duckeodendron Lamiids
Sapindaceae Thinouia Malvids
Rubiaceae Psychotria Lamiids
Annonaceae Guatteria Magnoliids

Em uma junção à esquerda, todas as linhas de x retornam após a junção. Para executar este tipo de junção, acrescentaremos um novo argumento, all.x = TRUE, indicando que manteremos todas as linhas de x, isto é, o data.frame à esquerda, que é a tabela 1.

merge(x = tab1, y = tab2, all.x = TRUE)
familia genero epiteto clado
Anisophylleaceae Anisophyllea manausensis NA
Burseraceae Dacryodes edilsonii NA
Burseraceae Protium aracouchini Malvids
Burseraceae Trattinnickia burserifolia NA
Lauraceae Licaria aureosericea NA
Lauraceae Ocotea delicata NA
Lauraceae Rhodostemonodaphne recurva NA
Pentaphylacaceae Freziera carinata NA
Rubiaceae Cinchona amazonica NA
Rubiaceae Duroia eriopila NA
Rubiaceae Psychotria viridis Lamiids
Sapindaceae Allophylastrum frutescens NA
Sapindaceae Cupania rubiginosa NA
Sapindaceae Thinouia myriantha Malvids
Solanaceae Duckeodendron cestroides Lamiids
Solanaceae Markea ulei NA
Solanaceae Solanum cyathophorum NA

Agora, temos uma nova situação. Para os valores de x sem correspondência em y, valores NA são acrescentados. Reparem na coluna clado e vejam que isso ocorreu apenas nesta variável. Por exemplo, vejam a família Anisophylleaceae. Ela ocorre apenas na tabela 1 e, portanto, não possui nenhum valor de cladoa ssociado a ela, pois esta variável ocorre apenas na tabela 2. Com a junção das tabelas, essa variável é retida, porém sem a existência de um valor para a família, é inserido então o valor NA. Temos também o caso de Annonaceae, presente na tabela 2. A família não é recuperada na junção interna, pois ela não existe na tabela 1 dentro da variável familia e, portanto, não apresenta correspondência com nenhum dado da tabela 1. Revejam o conceito de junção à esquerda para entender o porquê desse acontecimento.

7.4.2.3 Junção à direita

Ao juntarmos tabelas x e y, temos todas as linhas de y, e todas as colunas de x e y.Linhas em y sem correspência em x terão valores NA adicionados nas novas colunas. Se houver múltiplas correspondências entre x e y, todas as combinações retornam.

De maneira oposta à junção à esquerda, na junção à direita são mantidas todas as linhas de y. Desta vez, o argumento a ser utilizado é all.y = TRUE. Antes de executar a junção, vamos checar novamente as variáveis em comum e correspondências entre as tabelas x e y:

Tabela 7.6: Tabela 1
familia genero epiteto
Burseraceae Protium aracouchini
Burseraceae Trattinnickia burserifolia
Burseraceae Dacryodes edilsonii
Solanaceae Duckeodendron cestroides
Solanaceae Markea ulei
Solanaceae Solanum cyathophorum
Sapindaceae Allophylastrum frutescens
Sapindaceae Cupania rubiginosa
Sapindaceae Thinouia myriantha
Rubiaceae Psychotria viridis
Rubiaceae Duroia eriopila
Rubiaceae Cinchona amazonica
Lauraceae Ocotea delicata
Lauraceae Licaria aureosericea
Lauraceae Rhodostemonodaphne recurva
Anisophylleaceae Anisophyllea manausensis
Pentaphylacaceae Freziera carinata
Tabela 7.6: Tabela 2
familia genero clado
Burseraceae Protium Malvids
Solanaceae Duckeodendron Lamiids
Sapindaceae Thinouia Malvids
Rubiaceae Psychotria Lamiids
Annonaceae Guatteria Magnoliids

Agora executaremos a junção com o comando abaixo. Não deixem de reparar no uso do argumento all.y = TRUE, pois ele é o responsável por agora manter todas as linhas da tabela 2 (== y):

merge(x = tab1, y = tab2, all.y = TRUE)
familia genero epiteto clado
Annonaceae Guatteria NA Magnoliids
Burseraceae Protium aracouchini Malvids
Rubiaceae Psychotria viridis Lamiids
Sapindaceae Thinouia myriantha Malvids
Solanaceae Duckeodendron cestroides Lamiids

Notem que agora todos os dados da tabela 2 foram mantidos. Houve a inserção de um valor NA para a família Annonaceae na variável epiteto, pois esta variável não está presente na tabela 2. Revejam o conceito de junção à direita para entender o porquê desse acontecimento.

7.4.2.4 Junção total

Ao juntarmos tabelas x e y, temos todas as linhas e colunas de x e y. Onde não houver valores correspondentes, valores NA serão colocados nesses lugares.

Em uma junção total, uniremos todas as linha de x e y utilizando o argumento all = TRUE.

merge(x = tab1, y = tab2, all = TRUE)
familia genero epiteto clado
Anisophylleaceae Anisophyllea manausensis NA
Annonaceae Guatteria NA Magnoliids
Burseraceae Dacryodes edilsonii NA
Burseraceae Protium aracouchini Malvids
Burseraceae Trattinnickia burserifolia NA
Lauraceae Licaria aureosericea NA
Lauraceae Ocotea delicata NA
Lauraceae Rhodostemonodaphne recurva NA
Pentaphylacaceae Freziera carinata NA
Rubiaceae Cinchona amazonica NA
Rubiaceae Duroia eriopila NA
Rubiaceae Psychotria viridis Lamiids
Sapindaceae Allophylastrum frutescens NA
Sapindaceae Cupania rubiginosa NA
Sapindaceae Thinouia myriantha Malvids
Solanaceae Duckeodendron cestroides Lamiids
Solanaceae Markea ulei NA
Solanaceae Solanum cyathophorum NA

Reparem que valores NA são colocados nos valores da tabela 2 referentes à coluna epiteto, ausente na tabela 1. O mesmo se passa com valores da coluna clado, presente na tabela 2 e ausente na tabela 1. Revejam o conceito de junção total para entender o porquê desse acontecimento.

7.4.2.5 Semijunção

Ao juntarmos tabelas x e y, temos todas as linhas de x onde houver valores correspondentes em y, mantendo apenas colunas de x. É parecida com a junção interna, porém difere desta por nunca duplicar valores de x, retornando sempre apenas valores de x que houver uma correspondência em y.

A semijunção é muito similar à junção interna, diferindo desta por não incorporar as colunas de y, pois apenas utiliza esta tabela para filtrar os dados de x, constituindo-se então em um tipo de junção que filtra variáveis. Neste exemplo, utilizaremos as tabelas 1 e 3. Ambas compartilham as colunas familia e genero. Vamos checar primeiramente cada tabela e ver o que é compartilhado entre cada uma:

Tabela 7.7: Tabela 1
familia genero epiteto
Burseraceae Protium aracouchini
Burseraceae Trattinnickia burserifolia
Burseraceae Dacryodes edilsonii
Solanaceae Duckeodendron cestroides
Solanaceae Markea ulei
Solanaceae Solanum cyathophorum
Sapindaceae Allophylastrum frutescens
Sapindaceae Cupania rubiginosa
Sapindaceae Thinouia myriantha
Rubiaceae Psychotria viridis
Rubiaceae Duroia eriopila
Rubiaceae Cinchona amazonica
Lauraceae Ocotea delicata
Lauraceae Licaria aureosericea
Lauraceae Rhodostemonodaphne recurva
Anisophylleaceae Anisophyllea manausensis
Pentaphylacaceae Freziera carinata
Tabela 7.7: Tabela 3
familia genero epiteto
Burseraceae Protium aracouchini
Burseraceae Trattinnickia burserifolia
Burseraceae Dacryodes edilsonii
Sapindaceae Allophylastrum frutescens
Sapindaceae Cupania rubiginosa
Sapindaceae Thinouia myriantha
7.4.2.5.1 Maneira 4 - vetores lógicos e a função interaction()

Para executar uma semijunção com o pacote base do R, devemos fazer uso de vetores lógicos e da função interaction(), pois a função merge() não fornece uma maneira de se obter o que desejamos.

Vamos então à prática5. As colunas compartilhadas por ambas as tabelas serão nossas chaves:

chaves <- c("familia", "genero")

Partimos então para filtrar na tabela 1 a combinação de linhas para esse conjunto de colunas utilizando a função interaction() do pacote base do R:

interaction(tab1[, chaves])
##  [1] Burseraceae.Protium           Burseraceae.Trattinnickia    
##  [3] Burseraceae.Dacryodes         Solanaceae.Duckeodendron     
##  [5] Solanaceae.Markea             Solanaceae.Solanum           
##  [7] Sapindaceae.Allophylastrum    Sapindaceae.Cupania          
##  [9] Sapindaceae.Thinouia          Rubiaceae.Psychotria         
## [11] Rubiaceae.Duroia              Rubiaceae.Cinchona           
## [13] Lauraceae.Ocotea              Lauraceae.Licaria            
## [15] Lauraceae.Rhodostemonodaphne  Anisophylleaceae.Anisophyllea
## [17] Pentaphylacaceae.Freziera    
## 119 Levels: Anisophylleaceae.Allophylastrum ... Solanaceae.Trattinnickia

Essa função computa um vetor de fatores que representa a interação das colunas fornecidas na tabela 1. Se fizermos isso com a tabela 3, poderemos saber quais combinações ocorrem em ambas as tabelas.

interaction(tab3[, chaves])
## [1] Burseraceae.Protium        Burseraceae.Trattinnickia 
## [3] Burseraceae.Dacryodes      Sapindaceae.Allophylastrum
## [5] Sapindaceae.Cupania        Sapindaceae.Thinouia      
## 12 Levels: Burseraceae.Allophylastrum ... Sapindaceae.Trattinnickia

Agora utilizamos a mesma função interaction e o operador %in% para retornar um vetor lógico que utilizaremos para filtrar os valores da tabela 1 com correspondência na tabela 3.

linhas <- interaction(tab1[, chaves]) %in% interaction(tab3[, chaves])
linhas
##  [1]  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE
tab1[linhas, ]
familia genero epiteto
1 Burseraceae Protium aracouchini
2 Burseraceae Trattinnickia burserifolia
3 Burseraceae Dacryodes edilsonii
7 Sapindaceae Allophylastrum frutescens
8 Sapindaceae Cupania rubiginosa
9 Sapindaceae Thinouia myriantha

7.4.2.6 Antijunção

Retorna todas as linhas de x em que não há correspondência em y, mantendo apenas colunas de x.

Uma antijunção é ligeiramente diferente de uma semijunção pois ela retorna todas as linhas de x que não aparecem em y. Portanto, podemos utilizar o inverso de nosso vetor lógico linhas e utilizar este inverso para filtrar as linhas da tabela 1 e ter nossa tabela antijunção entre x e y:

antilinhas <- !linhas
tab1[antilinhas, ]
familia genero epiteto
4 Solanaceae Duckeodendron cestroides
5 Solanaceae Markea ulei
6 Solanaceae Solanum cyathophorum
10 Rubiaceae Psychotria viridis
11 Rubiaceae Duroia eriopila
12 Rubiaceae Cinchona amazonica
13 Lauraceae Ocotea delicata
14 Lauraceae Licaria aureosericea
15 Lauraceae Rhodostemonodaphne recurva
16 Anisophylleaceae Anisophyllea manausensis
17 Pentaphylacaceae Freziera carinata

7.5 Para saber mais

7.6 Exercícios

Referências

APG. 2016. «An update of the Angiosperm Phylogeny Group classification for the orders and families of flowering plants: APG IV». Botanical Journal of the Linnean Society 181: 1–20.

Chamberlain, Scott, Eduard Szoecs, Zachary Foster, e Zebulun Arendsee. 2020. taxize: Taxonomic Information from Around the Web. https://CRAN.R-project.org/package=taxize.


  1. Texto publicado originalmente no blog de R.O.Perdiz (https://ricardoperdiz.com/2020/04/23/juncao-tbl/)↩︎

  2. Esta solução de semijunção é baseada no tutorial do pacote poorman, recém-criado para emular as funções do pacote dplyr.↩︎