Descrições Taxonômicas com Rmarkdown
Este tutorial mostra como gerar descrições taxonômicas dinamicamente usando o rmarkdown no RStudio. O exemplo gera um documento (que pode ser um word .docx para posterior edição) que incluirá para cada espécie:
- uma descrição morfológica segundo um modelo que você deve informar;
- a lista de material examinado no formato da PhytoTaxa;
- um figura fenológica de cada espécie mostrando a densidade de coletas com flores e frutos em cada mês do ano.
- tratamento.docx - exemplo de docx gerado dessa forma
O que você precisa
- Dados morfológicos brutos - data.frame onde linhas são amostras e colunas são as variáveis morfológicas, e os valores das células podem ser números (separados por ';') ou categorias (idem). A exemplo do que exportado pela base de dados do laboratório; precisa ter obviamente a coluna com o nome das espécies;
- Dados sobre as exsicatas - para construção da lista de material examinado. Precisa ter as seguintes colunas (com esses nomes): c("COLLECTOR", "NUMBER", "COLLDD", "COLLMM", "COLLYY", "ADDCOLL", "COUNTRY", "MINORAREA", "MAJORAREA", "GAZETTEER_COMPLETA", "LATITUDE", "LONGITUDE", "ALTITUDE", "HERBARIA") alem da coluna com o nome da especie.
- Para a figura de fenologia também precisa ter a coluna FERTILIDADE (padrão wiki) - vai gerar apenas para flores e frutos
- formatodescricao.csv - uma tabela, com este exemplo, que especifica como as variáveis devem ser concatenadas na descrição. Essa tabela deve ter as seguintes colunas:
- PREFIXO = um texto padrao que vem antes do valor da variável (pode ser vazio)
- NOMECOLUNA = o nome da variavel/coluna (obrigatorio)
- SUFIXO = um texto padrao que ira depois do valor da variavel (INCLUIR AQUI A UNIDADE DE MEDIDA PARA VARIAVEIS QUANTITATIVAS) - pode ficar vazio
- ORDEM = um indice numerico para a ordem que as variaveis devem entrar na descricao (obrigatorio)
- FORMATO_QUANTITATIVO = qual o formato que voce quer as variaveis numericas. nessa coluna os valores precisam ser:
- rg = range ou amplitude de variação (para apenas minimo e maximo)
- msd = média e desvio padrão
- rgmds = a combinação dos dois anteriores
- CAIXA = qual a caixa para variaveis categoricas, podendo ser:
- alta = vai escrever a variacao em caixa alta
- baixa = vai escrever a variacao em caixa baixa
- primeira = vai escrever a variacao com a primeira letra em caixa alta (util para a primeira variavel, tipo Habito)
- INCLUIN = tanto para variaveis numéricas quanto categóricas se deve incluir o N amostral da espécie para cada variavel (valores 1 ou 0 para sim e não respectivamente)
- funcoesparadescricoes.r - as funções contidas neste arquivo do R, que são as funções que geram as descrições e a lista
Gerando o documento
- Se você não sabe o que é um rmarkdown, melhor entender isso antes - Relatórios dinâmicos com R Markdown e tem coisas que precisam ser instaladas no seu computador além do RStudio
- tratamento.rmd - arquivo de rmarkdown (rmd) que gera a descrição e que tem o seguinte código:
--- title: "Tratamento Taxonômico" output: word_document: keep_md: yes --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) #le as funcoes necessarias source("funcoesparadescricoes.R") ``` ```{r echo=FALSE, results='asis', dpi=300, fig.width=3,fig.height=1} #define um template (modelo) para a descricao de cada especie (cada %s e uma variavel dinamicamente gerado abaixo, que preenche este modelo) (isso e necessario para poder colocar tudo num unico arquivo) templatedaespecie ="## %s %s ###Material examinado: %s ###Fenologia: " linetemplate = " ------ " #importa o seus dados para o R (neste caso esta tudo dentro do mesmo arquivo) specs = read.table("formularioMestradoFINAL.csv",sep="\t",as.is=T,header=T,na.strings = c("NA","")) #importa o formato que voce definiu para a sua descricao (voce pode ter uma versao em portugues e outra em ingles para este arquivo) oformato = read.table(file='formatodescricao.csv',sep="\t",header=T,as.is=T,na.strings = c("","NA")) #pega uma lista com os nomes das especies para incluir na descricao spps = unique(specs$NOME) spps = spps[!is.na(spps)] #para cada especie, filtra os dados e gera a sua descricao, lista de amostras e figura fenologica for (i in 1:length(spps)) { #seleciona os dados para a especie dados = specs[specs$NOME==spps[i] & !is.na(specs$NOME),] #gera a descricao descricao = geradescricao(dados,oformato,sepcateg=", ",categ2=' ou ') #gera a lista de material no formato PhytoTaxa matexam = listafitotaxa(dados,lang='pt_',herbariosexaminados = c("INPA","MO","RB"), markdown = T) #imprime no arquivo essas informacoes cat(sprintf(templatedaespecie, spps[i], descricao, matexam)) #resume os dados fenologicos para especie (note que a funcao fenologia simplifica tudo para flor e fruto, mas voce pode modifica-la se quiser plotar outras categorias) tb = fenologia(dados) #plota uma figura da distribuicao das coletas com flores e frutos nos meses do ano cores = c("black","white","red","yellow","green","blue") layout(matrix(c(1,1,1,1,1,2),nrow=1,ncol=6)) par(mar=c(2,2,1,0),mgp=c(1.2,0.3,0),tck=-0.01,cex.axis=0.7,cex.lab=0.8) bt = barplot(as.matrix(tb),beside=F,col=cores,axes=F,axisnames=F, ylab='N amostras') axis(side=1,at=bt,labels=colnames(tb),las=2) axis(side=2,las=2) par(mar=c(2,0,1,1)) plot.new() legend("center",legend=rownames(tb),pt.bg=cores,pt.cex=1.5,bty='n',pch=22,ncol=1,cex=0.8) cat(sprintf(linetemplate)) } ```