Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • Ludmila155
  • altamiro187
  • baby
  • bruna141
  • bruna165
  • bruna216
  • devel
  • eduardo158
  • eduardo200
  • eduardo217
  • guilherme190
  • guilherme191
  • guilherme192
  • guilherme193
  • guilherme194
  • guilherme195
  • jhenifer125
  • jhenifer126
  • jhenifer127
  • jhenifer128
  • jhenifer207
  • lineu180
  • lineu181
  • lineu182
  • lineu183
  • lineu184
  • lineu185
  • lineu186
  • ludmila155
  • maria132
  • maria133
  • maria134
  • maria136
  • maria137
  • master
  • vinicius130
  • vinicius131
  • vinicius173
  • vinicius176
  • vinicius177
  • vinicius178
  • vinicius209
  • vinicius210
  • walmes159
  • walmes213
45 results

Target

Select target project
  • pet-estatistica/labestData
  • aab15/labestData
  • eys16/labestData
3 results
Select Git revision
  • baby
  • bruna179
  • bruno148
  • bruno149
  • devel
  • eduardo158
  • guilherme190
  • jhenifer125
  • jhenifer126
  • lineu180
  • maria136
  • maria137
  • master
  • vinicius173
  • walmes159
  • walmes160
16 results
Show changes
Commits on Source (326)
File deleted
...@@ -51,11 +51,16 @@ if (length(list.files("./vignettes"))) { ...@@ -51,11 +51,16 @@ if (length(list.files("./vignettes"))) {
#-------------------------------------------- #--------------------------------------------
# Checar conteúdo e organização do pacote. # Checar conteúdo e organização do pacote.
check(cleanup = FALSE, checagem <- check(cleanup = FALSE,
manual = TRUE, manual = TRUE,
vignettes = FALSE, vignettes = FALSE,
check_dir = "../") check_dir = "../")
if (length(checagem$errors) > 0) {
cat(checagem$errors, sep = "\n")
stop("Falha ao checar o pacote")
}
#-------------------------------------------- #--------------------------------------------
# Construir pacote. # Construir pacote.
......
...@@ -8,13 +8,9 @@ ...@@ -8,13 +8,9 @@
*.aux *.aux
*.log *.log
*.out *.out
*.RData
README.html README.html
CONTRIBUTING.html CONTRIBUTING.html
STYLEGUIDE.html
roteiro.R roteiro.R
inst/doc inst/doc
plano.Rmd
vignettes/*.html vignettes/*.html
!vignettes/_Mathjax.html
!vignettes/_before_body.html
!vignettes/_after_body.html
# Guia de Contribuição # # Guia de Contribuição
**PET Estatística UFPR** - <pet.estatistica.ufpr@gmail.com> **PET Estatística UFPR** - <pet.estatistica.ufpr@gmail.com>
...@@ -8,784 +8,7 @@ ...@@ -8,784 +8,7 @@
> >
>> -- Mark Twain >> -- Mark Twain
<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-generate-toc again --> O Guia de Contribuição é uma vinheta do pacote. O fonte desse arquivo é
**Tabela de Conteúdo** o [vignettes/guia-contrib.Rmd](vignettes/guia-contrib.Rmd). Para acessar
o guia de contribuição em html, instale o *labestData* e chame a
1. [Para que serve um Guia de Contribuição?](#para-que-serve-um-guia-de-contribuio) vinheta.
1. [Qual é o Guia de Estilo de Código?](#qual--o-guia-de-estilo-de-cdigo)
1. [Qual é o fluxo de trabalho do *labestData*?](#qual--o-fluxo-de-trabalho-do-labestdata)
1. [Como dar nome aos datasets?](#como-dar-nome-aos-datasets)
1. [Como dar nome para as variáveis no `data.frame`?](#como-dar-nome-para-as-variveis-no-dataframe)
1. [Como declarar dados que não sejam tabelas?](#como-declarar-dados-que-no-sejam-tabelas)
1. [Que tipo de valor usar para as variáveis?](#que-tipo-de-valor-usar-para-as-variveis)
1. [O que colocar na documentação?](#o-que-colocar-na-documentao)
1. [Como dar nomes as vinhetas?](#como-dar-nomes-as-vinhetas)
1. [Como habilitar no `DESCRIPTION`](#como-habilitar-no-description)
1. [Como criar um *issue*?](#como-criar-um-issue)
1. [Quanto de trabalho representa um *issue*?](#quanto-de-trabalho-representa-um-issue)
1. [Como fechar ou editar um *issue*](#como-fechar-ou-editar-um-issue)
1. [Como fazer mensagens de *commit*?](#como-fazer-mensagens-de-commit)
1. [Como criar um *merge request*?](#como-criar-um-merge-request)
1. [Quais as exigências para aceitar um *MR*?](#quais-as-exigncias-para-aceitar-um-mr)
1. [Existe um *checklist* para incluir um *dataset*?](#existe-um-checklist-para-incluir-um-dataset)
1. [Existe um *checklist* antes de submeter um MR?](#existe-um-checklist-antes-de-submeter-um-mr)
<!-- markdown-toc end -->
## Para que serve um Guia de Contribuição? ##
O Guia de Contribuição serve para orientar a forma de trabalhar, tanto
individual quanto em equipe, para que seja eficiente, padronizada,
coordenada e segura. Ele estabelece as regras e etapas principais do
desenvolvimento de um projeto. O Guia de Contribuição incluí orientações
de como escrever o código, as mensagens de *commit*, criar arquivos,
etc.
Interessados em participar do projeto devem se orientar pelo Guia de
Contribuição sobre como o desenvolvimento acontece, pois ele contém a
documentação sobre a realização das tarefas, as responsabilidades dos
indivíduos e equipes, as etapas e prazos para atingir as metas do
projeto.
## Qual é o Guia de Estilo de Código? ##
Um Guia de Estilo de Código é um conjunto de recomendações (ou regras)
para padronizar a forma de escrever código. Códigos que são escritos
seguindo um estilo padrão são mais fáceis de manter, modificar e
garantir que estão corretamente escritos e funcionais, principalmente
quando muitos programadores estão envolvidos.
Quase todas as linguagem de programação permitem que os usuários adotem
diferentes padrões de escrita de código. Algumas não diferenciam
maiúsculas e outras não exigem indentação, por exemplo. Em função de
simplicidade, comodismo ou inércia na hora de escrever ou por causa de
características da linguagem ou do editor usado, os usuários quase
sempre tem um padrão particular para escrita de código.
No pacote *labestData* deve ser considerado o *"idioma"* padrão do R,
descrito no [STYLEGUIDE.md](STYLEGUIDE.md). Nesse arquivo é descrito
desde como nomear objetos até o uso de espaço ao redor dos operadores.
## Qual é o fluxo de trabalho do *labestData*? ##
O fluxo de trabalho é a sequência de etapas que devem ser cumpridas para
atingir um resultado. No *labestData*, o fluxo de trabalho tem unidade
semanal de desenvolvimento e acompanhamento.
**Descrição do roteiro semanal**
1. Criar um *issue* para o Projeto no GitLab. Ao criar o *issue*,
dedique-se para escrever uma detalhada descrição do trabalho a ser
feito. Isso informa a equipe sobre onde você irá trabalhar para que
não se duplique os esforços. Todo *issue* tem um número associado,
como `#7` e isso deve ser usado nas comunicações. O GitLab cria
links para os *issues* automaticamente nas mensagens quando se
escreve o número precedido de #, como `#7`.
2. Faça uma atualização do seu ramo `baby` local com o ramo `baby`
remoto do projeto no GitLab (atualize o HEAD). Quando você executa
o comando `git branch -a`, aqueles precedidos de `remote/` são os
remotos. Isso pode ser feito com o comando `git fetch origin baby`
que atualiza o `remotes/origin/baby` seguido de `git merge
origin/baby` para passar do remoto para o local o conteúdo
trazido. O comando `git pull origin baby` executa as duas ações em
um único comando. Em caso de insegurança, visite a
[Apostila de Git do PET Estatística](https://gitlab.c3sl.ufpr.br/pet-estatistica/apostila-git/raw/devel/apostila_git.pdf).
3. Crie um *branch*, a partir do `baby`, para começar o trabalho que
você descreveu no *issue* que acabou de criar no GitLab. O nome do
ramo deve ser formado pelo seu nome e número identificador, aquele
atribuído ao *issue* assim que ele foi criado, como `angela23` e
`eduardo31`. Usar esse padrão facilita para os membros descobrirem
do que se trata esse *branch*, pois basta consultar o *issue* de
mesmo número, e quem é o responsável pelo mesmo.
4. Faça o trabalho que descreveu. Nessa etapa você senta na frente do
computador e desenvolve o seu trabalho que, envolve os seguintes
passos:
1. Escrever, corrigir, aperfeiçoar, ampliar, revisar, organizar,
limpar, etc. Fazer o trabalho.
2. Faça *commits* com regularidade, de preferência, por unidades de
trabalho para as quais se tem um significado claro - uma unidade
de trabalho comitável - que possa ser expresso sem prejuízo por
uma frase curta ou por uma lista de frases curtas. Quando não
souber se já possuí uma unidade de trabalho merecedora de
*commit*, faça o *commit* do mesmo jeito. Não seja conservador
com a quantidade de *commits*. No entanto, seja caprichoso ao
fazer a sua mensagem de *commit* para garantir que esteja em
conformidade com o guia de boas práticas.
3. Em intervalos maiores, mas ainda com frequência, suba seu
trabalho para o repositório. Isso se faz com o comando `git push
origin fulano00`, em que `fulano00` representa o seu *issue*. É
importante fazer *pushs* sempre para evitar de perder o
trabalho, já que a sua máquina que está sujeita a avaria, e
mostrar trabalho, uma vez que isso estimula os demais a fazerem
o mesmo.
6. Quando cumprir com o trabalho previsto no seu *issue*, dê o *push*
final e faça uma requisição de mescla - um *merge request* (MR). Ao
criar o MR, assim como foi para o *issue*, existe um espaço para a
descrição de tudo o que foi realizado no *branch*. Basicamente isso
é um resumo de todos os *commits* feitos. Embora a descrição do
*issue* informe o que estava previsto fazer, isso não significa que
tudo foi feito. Você pode ter feito trabalho a mais, ou visto que
algo não foi necessário. Então relate na descrição do MR exatamente
o que será adicionado ao *branch* alvo. Os MR devem ser para o
*branch* `devel` e devem ser atribuídos aos *mergers* do projeto
(pessoas responsáveis por fazer as inspeções e merge).
7. Aguarde a avaliação do MR. Nessa etapa quem trabalha é o
*merger*. Em caso de aprovação, o *merge* será aplicado. Em caso
contrário, você será notificado a fazer alterações (correções ou
adições).
8. Se o MR não foi aceito, o *merger* vai informar o que fazer com
mensagem abaixo da descrição do merge. Faça as adequações
solicitadas. Volte para a etapa 4.
9. Quando o MR for aprovado, feche o *issue* correspondente. Indique
na mensagem de fechamento do *issue* qual foi o número do MR
dele. Os ramos de demanda - com prefixo de nome de *colaborador* -
são removidos após o *merge* mas os *issues* e os MR - que junto
com os *commits* contam a trajetória do projeto - permanecem no
GitLab.
**Guia de códigos R e GIT para as atividades semanais**
A cada semana devem ser criados novos ramos para realização das
atividades propostas. Porém deve-se ter atenção ao criá-los. Estes ramos
devem necessariamente sair do ramo `baby`. O ramo `baby` contém apenas
um conjunto de dados para que adicionar os novos, seja mais fácil
revisar as contribuições.
Não é necessário que o ramo de trabalho anterior tenha sido incorporado
ao devel, ou seja, para criar o `fulano2` não precisa ter o `fulano1`
incorporado ao `devel`. Abaixo temos os comandos Git para criar o ramo a
partir do `baby`.
```bash
# Retorna para o ramo baby (move o HEAD)
git checkout baby
# Atualiza o ramo baby com a versão do servidor
git pull origin baby
# Cria um ramo para desenvolver as atividades propostas no issue00
git branch fulano00
# Vai para o ramo criado (mode o HEAD)
git checkout fulano00
```
Com isso já estamos em um ramo, `fulano00` criado especificamente para o
desenvolvimento das atividades propostas no `issue #00`, assim podemos
prosseguir com o trabalho propriamente dito, a adição de conjuntos de
dados. Note que o ramo saiu do `baby`.
```r
#=======================================================================
# Passo 1 - Ler e inserir os dados na pasta ./data-raw/
# Usando o R -----------------------------------------------------------
# Transcreva os dados das tabelas
CiclanoTb0.0 <- expand.grid(X1 = 1:6, X2 = LETTERS[1:4])
CiclanoTb0.0$X3 <- scan()
# Ou faça
CiclanoTb0.0 <- expand.grid(X1 = 1:6, X2 = LETTERS[1:4], X3 = 0)
CiclanoTb0.0 <- edit(CiclanoTb0.0)
# Salve a tabela em formato txt no diretório ./data-raw/
write.table(CiclanoTb0.0,
file = "./data-raw/CiclanoTb0.0.txt",
sep = "\t",
quote = FALSE,
row.names = FALSE)
# Você pode usar a função write2txt() definida em:
# https://gitlab.c3sl.ufpr.br/snippets/34.
write2txt(CiclanoTb0.0)
# Usando outro software ------------------------------------------------
# Transcreva os dados da tabela no software e salve-os no formato txt
# na pasta ./data-raw/
# Leia os dados na sessão R, para utilizá-los posteriormente
CiclanoTb0.0 <- read.table("./data-raw/CiclanoTb0.0.txt",
header = TRUE, sep = "\t")
#=======================================================================
# Passo 2 - Inserir os dados no diretório ./data/
library(devtools)
use_data(CiclanoTb0.0)
# Você pode usar a função write2rda() definida em:
# https://gitlab.c3sl.ufpr.br/snippets/34.
write2rda(CiclanoTb0.0)
#=======================================================================
# Passo 3 - Escreva a documentação utilizando as tags roxygen2
# Dica: prepare os códigos da sessão exemplo aqui, para verificar se os
# gráficos/tabelas são produzidos corretamente
xtabs(~X1, CiclanoTb0.0)
plot(X1 ~ X2, data = CiclanoTb0.0)
# Você pode usar a função write2Rdoc() definida em:
# https://gitlab.c3sl.ufpr.br/snippets/34. Essa função cria o arquivo
# com nome do objeto e já escreve algumas informações, retiradas do
# próprio objeto. Depois de usar, abra o arquivo e preencha o restante.
write2Rdoc(CiclanoTb0.0)
#=======================================================================
# Passo 4 - Gere e check a documentação (insere um arquivo no diretório
# ./man/). Obs.: O houver aviso sobre o NAMESPACE não ter sido feito
# pelo roxygen2, delete o arquivo para que ele seja contruído novamente.
file.remove("NAMESPACE")
document()
check_man()
#=======================================================================
# Passo 5 - Verifique a constituição e organização do pacote. Caso
# apareçam sinais de ERROR, WARNING ou NOTE, procure eliminar esses
# sinais.
check()
```
Após todos os passos concluídos devemos ter os arquivos `.txt`, `.rda`,
`.R` e `.Rd` devidamente criados. Podemos voltar ao terminal e comitar
essas contribuições.
```bash
# Adiciona os 4 arquivos criados e commita as alterações
git add data-raw/CiclanoTb0.0.txt data/CiclanoTb0.0.rda
git add R/CiclanoTb0.0.R man/CiclanoTb0.0.Rd
git commit -m "Adiciona tabela 0.0 do livro do Ciclano"
# Desconsidera as alterações realizadas nos arquivos que são gerados
# automaticamente
git checkout -- .
# Limpe o seu diretório removendo os arquivos não rastreados.
git clean -xfd
# Enviando as alterações para o servidor
git push origin fulano00
```
Agora com tudo comitado podemos seguir para o próximo conjunto de
dados e refazer todos os passos descritos.
Vale ressaltar que este guia de códigos compreende a rotina básica para
inclusão de um conjunto de dados, se for necessária a inclusão de um
biblioteca para elaboração de gráficos ou análises ou ainda forem
criadas funções para o pacote os arquivos NAMESPACE e DESCRIPTION
deverão ser alterados e essas alterações comitadas. Veja a seção
[Como habilitar no DESCRIPTION](#como-habilitar-no-description) como
adicionar declarar o uso de pacotes.
## Como dar nome aos datasets? ##
No caso de datasets de livros (obras impressas), o nome do dataset é
formado pelo sobrenome do primeiro autor seguido da indentificação do
conjunto de dados na obra. Os exemplos abaixo ilustram variações dessa
regra.
* ZimmermannTb8.2: Tabela 8.2 do Zimmermann (2004);
* RamalhoTb4.3: Tabela 3 do capítulo 4 em Ramalho, Ferreira e Oliveira
(2005). Nesse livro as tabelas tem numeração reiniciada em todo
capítulo e por isso adiciona-se o numeral do capítulo para evitar
ambiguidade, já que vários capítulos certamente tem a tabela 1.
* BanzattoQd3.6.1: Quadro 3.6.1 do Banzatto e Kronka (2013). Este
livro usa o nome quadro ao invés de tabela.
* DiasEx10.7: Exercício 7 do capítulo 10 em Dias e Barros (2009). Os
exercício são númerados dentro dos capítulos então adiciona-se o
digito do capítulo para não haver ambiguidade.
* StorkEg2.3.5: Exemplo 2.3.4 do Stork et al. (2011). Para não
confundir Exercício e Exemplo, consideramos abreviar com Eg de
*exempli gratia*.
* BarbinPg52: Tabela sem legenda na página 52 do Barbin (2013). Nesse
caso identifica-se usando a página. No caso de várias tabelas na
mesma página, use mais um digito separado por ponto: Pg52.1 e
Pg52.2.
* PimentelPg142: Dados em Pimentel-Gomes (2009) que estão em tabelas
distribuidas em duas páginas mas não tem legenda, assim usa-se o
número da primeira página.
* CharnetApD.1: Primeiro conjunto de dados apresentado no apêndice D
do livro Charnet (2008).
A prioridade na hora de atribuir a identificação é a seguinte: Tabela =
Quadro > Exemplo = Exercício > Página. Ou seja, se a tabela 5 faz parte
do exemplo 3 que está na página 122, o nome do dataset terá sufixo
Tb5. Note que uma página pode ter mais de uma tabela, bem como um
exemplo. Além do mais, diferentes edições podem preservar com mais
facilidade a numeração das tabelas do que a localização delas nas mesmas
páginas. Sendo assim, um dataset só será identificado como sufixo Ex ou
Eg se não tiver legenda (Tabela ou Quadro) e só será identificado pela
página se não houver outra alternativa.
A tabela abaixo resume as siglas usadas para cada tipo de referência ao
conjunto de dados dentro da obra.
| Referência | Abreviação |
|------------+------------|
| Tabela | Tb |
| Quadro | Qd |
| Exercício | Ex |
| Exemplo | Eg |
| Apêndice | Ap |
| Página | Pg |
Dados em artigos devem usar o nome do primeiro autor, mas esteja atento
às recomendações a seguir:
* Se do artigo for usado apenas uma tabela de dados, não há
necessidade de colocar referência e contador no nome, ou seja, basta
`Fulano` ao invés de `FulanoTb1`.
* Se do artigo for usado mais de uma tabela, deve-se usar um
contador. Nesse caso seria `Fulano1` e `Fulano2`.
* No caso de dados de artigos diferentes que tenham o primeiro com
mesmo sobrenome, para distingui-las deve-se usar o ano logo após o
sobrenome do primeiro autor.
Dados de arquivos pessoais que não foram usados em uma publicação
(artigo, trabalho de conclusão de curso, dissertação ou tese), poder ter
o nome do proprietário, do local de origem, ou outro identificador que
seja único que descritivo do dataset.
## Como dar nome para as variáveis no `data.frame`? ##
O nome das variáveis não deve conter acentos (ASCII pleno), não pode
iniciar com número e só admite o underline como não alfanumérico. As
variáveis de nome composto e longo podem ser representadas por siglas, e
as de nome simples mas longo, por abreviação. Veja a tabela com
exemplos.
| Variável | Nome da coluna |
|----------------------------+----------------|
| Dias | dias |
| Peso | peso |
| Idade | idade |
| Renda | renda |
| Cultivar | cult |
| Variedade | varied |
| Adubação | adub |
| Produtividade | prod |
| Temperatura | temp |
| Pressão sanguínea | ps |
| Massa seca de parte aérea | mspa |
| Diâmetro à altura do peito | dap |
## Como declarar dados que não sejam tabelas? ##
Existem casos em que os dados não são uma tabela (várias variáveis, em
cada coluna uma variável de tipo diferente), ou seja, usar um
`data.frame` para armazená-los não é recomendado. Existem três casos
principais:
* Quando os dados são uma amostra aleatória de uma única variável, por
exemplo. Nesse caso, os dados devem ser armazenados em um vetor. Ele
deve ser um vetor nomeado no caso das observações terem rótulo, como
o nome da cidade que corresponde ao valor (veja o dado `precip`).
* Quando os dados são uma matriz, ou seja, todos os valores
correspondem ao mesmo tipo de valor. É o caso, por exemplo, de uma
matriz de distâncias entre cidades. Nesse caso, os dados devem ser
armazenados como matriz (`matrix`). Pode-se atribuir nome para as
linhas e colunas (`rownames` e `colnames`) para identificar os
registros.
* Quando os dados são uma amostra aleatória não independente, uma
séria temporal. Neste caso, no R, há uma classe de objetos `ts`
(_Time-Series_) que armazena os valores da amostra junto com a
informação da frequência em que foi observada.
## Que tipo de valor usar para as variáveis? ##
É fundamental que os objetos que armazenem as variáveis declarem o tipo
correto de valor. São 5 os tipos principais:
* `numeric`: é o tipo de valor para variáveis contínuas. Normalmente
essas variáveis tem unidade de medida e números decimais (e.g. 1.85
m, 78.5 kg).
* `integer`: é o tipo de valor para variáveis discretas (números
inteiros). Variáveis de contagem são desse tipo. São também as
variáveis que identificam a repetição ou amostra, normalmente
sequências que começam em 1. Quando variáveis contínuas tiverem
representação que não tenha casas decimais, elas dever ser
declaradas como `integer` para salvar espaço em disco e tornar as
contas mais rápidas.
* `character`: é o tipo de valor para identificar indivíduos, por
exemplo, os nomes das cidades, dos bairros, dos pacientes, etc. Note
que esses nomes dificilmente se repetem no conjunto de dados são
únicos de um indivíduo e não de uma classe/grupo.
* `factor`: é tipo de valor para variáveis categóricas. São rótulos
que classificam um conjunto de indivíduos/observações com uma
variável qualitativa comum. Como exemplo, tem-se os blocos de um
experimento em delineamento de blocos casualizados, as observações
do mesmo bairro, os indivíduos do mesmo sexo, as parcelas do mesmo
local, cultivar, genótipo, variedade, população, etc.
* Os fatores devem ter o rótulo mais descritivo possível, ou seja,
se os níveis são Kennebec, Huinkul e Buena VIsta (variedades de
batatinha) não codifique como 1, 2 e 3. Também não abrevie
porque na forma abreviada, a correspondência não é
imediata. Quandos os nomes completos são usados, eles aparecem
nos gráficos e nas saídas.
* Variáveis como sexo (Masculino, Feminino) podem ser
abreviadas por M e F, sem prejuízo ao entendimento, pois a
correspondência é imediata (é fácil adivinhar que M e F
representa masculino e feminino). Da mesma forma, os níveis
resistente e suscetível poder ser abreviados para R e S, e os
Estados brasileiros podem ser representados pelas siglas.
* Nos casos em que os fatores são representados por número
inteiros mas são categóricos (como é caso dos blocos do
experimento), deve-se usar `factor` ao invés de `integer` para a
variável, mesmo que os rótulos continuem a ser os números
inteiros. Isso evita erros na interpretação e análise dos
dados. Uma opção para os blocos, por exemplo, é usar números
romanos, como I, II e III, para representar os diferentes
blocos. Para fatores como variedade, uma alternativas é usar
letras maiúsculas, como A, B e C, ao invés dos números.
* Deve ser feita distinção entre fatores nominais (`factor`) e
ordinais (`ordered`).
* `logical`: são para variáveis que assumem dois valores (`TRUE`,
`FALSE`). Também podem ser representados pelos valores inteiros 1
e 0.
Abaixo tem-se o código R para fazer conversão de tipo de valor.
```r
x <- 1:5
class(x)
z <- factor(x)
class(x)
x <- c(1, 2, 3)
y <- c(1L, 2L, 3L)
w <- 1:3
z <- as.integer(x)
c(class(x), class(y), class(w), class(z))
x <- gl(4, 2)
class(x)
levels(x) <- LETTERS[1:nlevels(x)]
str(x)
```
## O que colocar na documentação? ##
Os datasets devem ter uma documentação precisa. Existem vários campos da
documentação que podem ser usados, no entanto, somente 7 serão exigidos.
Uma lista completa com a maioria dos campos está documentada em
<https://cran.r-project.org/web/packages/roxygen2/roxygen2.pdf>.
Para ilustrar o uso dos campos principais, abaixo tem-se a documentação
do *data.frame* `RamalhoTb4.7`. Embora os campos sejam autoexplicativos
por causa do nome, segue breve explicação.
* `@name`: o nome do dataset.
* `@title`: título que representa o dataset. Deve estar captalizado,
ou seja iniciais maiúsculas, exceto para artigos e preposições.
* `@description`: descrição do conjunto de dados, como delineamento,
forma de arquisição dos dados, objetivo do estudo,
pessoas/organizações envolvidas, hipóteses, etc. Pode conter mais
de um parágrafo.
* `@format `: forma e conteúdo do dataset. Informa as dimensões e cada
uma das variáveis (nome, descrição, unidade de medida, tipo de
valor).
* `@keywords`: palavras que classificam o dataset, como o tipo de
variável resposta e delineamento (ex: DIC, DQL, contagem,
proporção). Elas aparecem no índice remissivo no manual em PDF.
* `@source`: indica a fonte dos dados. Normalmente é a referência
bibliográfia, a url do endereço de origem ou o nome proprietário dos
dados (indivíduo, grupo ou instituição).
* `@examples`: contém código R que produz gráficos e tabelas com os
dados.
```
#' @name RamalhoTb4.7
#' @title Produção de Cultivares de Arroz
#' @description Produção em função de cultivares de arroz em um
#' experimento instalado em delineamento de blocos casualizados.
#' @format Um \code{data.frame} com 30 observações e 3 variáveis, em que
#'
#' \describe{
#'
#' \item{\code{bloco}}{Blocos do experimento com 3 níveis
#' qualitativos. Sua função é de controle local.}
#'
#' \item{\code{cultivar}}{Fator de interesse com 10 níveis
#' qualitativos. São as cultivares de arroz estudadas no
#' experimento.}
#'
#' \item{\code{producao}}{Produção de arroz medida em cada parcela
#' (kg ha\eqn{^{-1}}).}
#'
#' }
#' @keywords DBC
#' @source Ramalho, M. A. P., Ferreira, D. F., Oliveira,
#' A. C. de. (2005). Experimentação em genética e melhoramento de
#' plantas (2nd ed., p. 322). Lavras, MG: UFLA. (Tabela 7, pág. 62)
#' @examples
#'
#' library(lattice)
#'
#' data(RamalhoTb4.7)
#' str(RamalhoTb4.7)
#'
#' xyplot(producao ~ cultivar, groups = bloco, data = RamalhoTb4.7,
#' ylab = expression("Produção"~(kg~ha^{-1})),
#' xlab = "Cultivares de arroz")
#'
NULL
```
Nesse exemplo de documentação, atente para o seguinte:
* O título está captalizado e não termina com pontuação;
* O uso de `\code{}` para as descrição das variáveis que exibe esses
textos em fonte monoespaço. Cada `\item` descreve uma variável e a
ordem deles deve ser a mesma ordem das colunas no `data.frame`. A
decrição termina com ponto final.
* A referência bibliográfica no formato APA sem o `&` separando os
últimos dois autores. A referência contém cidade, estado e
editora. No final tem-se a referência e página sobre o dataset.
* Na sessão exemplos, usa-se `data()` e `str()` para o dataset. No
código da sessão exemplo, os gráficos ou tabelas devem priorizar
visualizações mais próximas das hipóteses ou interesse do
pesquisador. Sendo assim, a produção está em função das cultivar e
não dos blocos porque o interesse é estudar a cultivar, já o bloco
está presente para haver controle local.
* A representação das unidades de medida está em notação de potência
na documentação (`\eqn{}`) e no código da seção exemplos
(`expression()`).
* A indentação negativa de 4 espaços e largura de 72 digitos para fazer
quebra de linhas.
Para gerar a citação bibliográfica no formato APA, padrão considerado no
pacote, visite <http://www.citationmachine.net/apa/cite-a-book/manual> e
preencha as informações. Use o resultado gerado para citar a obra.
Em certas situações, o campo `@seealso` (veja também) pode ser usado. É
o caso de dois arquivos de dados serem "irmãos", ou seja, são duas
tabelas de experientos de mesma estrutura feitos em anos consecutivos,
em locais diferentes, ou alguma outra condição de contorno diferente.
Recentemente foi habilitado o uso de figuras nas páginas de documentação
do R. Visite
<https://cran.r-project.org/doc/manuals/R-exts.html#Figures> para
detalhes.
Por razão ainda desconhecida, títulos com acentos são substituídos por
`NA` no manual em PDF. Na documentação em HTML, no entanto, e produzida
sem erros.
## Como dar nomes as vinhetas? ##
TODO
## Como habilitar no `DESCRIPTION` ##
No caso de usar algum pacote que não seja da lista de pacotes básicos do
R (aqueles que estão disponíveis na instalação mínima padrão), é
necessário acrescentar o pacote a lista de pacotes na seção `Imports` ou
`Suggests` do arquivo `DESCRIPTION`. Você pode editar o arquivo mas
esteja atento para indentação e uso das vírgulas nesses campos. É
aconselhado usar a função `devtools::use_package()`.
```r
use_package(package = "lattice", type = "Imports")
use_package(package = "plyr", type = "Suggests")
```
## Como criar um *issue*? ##
De uma maneira simples, um *issue* é uma tarefa. Quando você cria um
*issue*, você está documentando algo que precisa ser feito. Essas
tarefas podem ser relacionadas à adições (criar novos arquivos, criar
conteúdo em arquivos) ou correção (ortográficas, em código) no seu
pacote.
Na página do repositório existe uma entrada chamada
[*Issues*](https://gitlab.c3sl.ufpr.br/pet-estatistica/labesData/issues)
no menu esquerdo. Ao entrar nessa página, existe um botão de create
[new issue](https://gitlab.c3sl.ufpr.br/pet-estatistica/iguir2/issues/new?).
Na página de criar um *issue*, você deve preencher os seguintes campos:
* Title: com um título que representa o seu *issue*.
* Description: com uma descrição detalhada do que deve ser feito no
*issue*.
* Assignee: com quem é o responsável pelo desenvolvimento do *issue*.
* Milestone: com a marca de milha a que o *issue* pertence, se alguma.
* Labels: com as palavras chaves apropriadas para o *issue*, se
alguma.
No projeto **labesData** são adotadas como _Milestones_, as obras
elencadas para transcrição dos dados ao pacote e os _Labels_ são as
disciplinas Estatísticas que a obra coompreende. Visite ambos:
[milestones](https://gitlab.c3sl.ufpr.br/pet-estatistica/labestData/milestones)
e
[labels](https://gitlab.c3sl.ufpr.br/pet-estatistica/labestData/labels).
Por exemplo, ao criar um *issue* que propõe a adição de três conjuntos
de dados do capítulo 3 do livro Estatística Multivariada de Ferreira
(2011) deve-se selecionar a _milestone_ `Ferreira` e o _label_ `Análise
Multivariada`.
Feito isso, clique em *Submit issue*. Seu *issue* vai ter um número
associado e todos os membros do projeto poderão consultar o seu *issue*
para saber detalhes sobre o que irá ser feito.
## Quanto de trabalho representa um *issue*? ##
É difícil ser preciso nisso, mas aconselha-se que no *labestData* um
*issue* 1) seja o trabalho correspondente a duas horas de dedicação ou,
ainda que o tempo estimado não seja perto desse, que 2) seja uma unidade
característica de trabalho que não vale a pena dividir em mais *issues*.
A última situação ocorre, por exemplo, quando você precisa criar uma
grande função, que demora por volta de 5 horas de trabalho. Uma
dedicação de 2 horas pode não ter uma função pronta que passe nas
verificações de *build*. No primeiro caso, por outro lado, se o trabalho
é texto, por exemplo, mesmo que este esteja incompleto a verificação de
*build* será verde.
## Como fechar ou editar um *issue* ##
Para editar, basta acessar o menu
[*Issues*](https://gitlab.c3sl.ufpr.br/pet-estatistica/labesData/issues)
e abrir o *issue* desejado. A edição permite editar praticamente tudo,
embora seja desaconselhado modificar o título e descrição do
mesmo. Deve-se dedicar na hora de atribuir título e descriação para que
sejam apropriados e sem necessidade de mudar no futuro. Essa é a
filosofia do faça certo de primeira (*do it right the first time*).
Na página de um *issue* é possível fazer uma discussão sobre ele, bem
como atribuir a outro colaborador. Quandor o *issue* for concluído, ou
seja quando o ramo dedicado as tarefas descritas neste *issue* for
mesclado ao `devel`, deve-se fechá-lo.
## Como fazer mensagens de *commit*? ##
Mensagens de *commit* são de duas formas: simples e composta (mono ou
multi linhas). As mensagens simples são aquelas que ocupam uma linha
apenas, normalmente com uma única sentença. Elas descrevem modificações
cuja descrição cabe em uma linha de 72 caracteres. Você pode escrever na
própria linha de instrução do *commit*, como a seguir.
```
git commit -m "Minha mensagem de uma linha aqui."
```
As mensagens compostas, por outro, servem para documentar várias
modificações. Então não é possível usar a opção `-m`. Apenas faça `git
commit` seguido de ENTER que um editor de terminal vai abrir para que
você escreva a mensagem de *commit*. Normalmente o editor é o vi ou
nano, mas outros podem ser habilitados editando o arquivo `.gitcongif`
que fica na sua *home*. Abaixo um exemplo de mensagem composta.
```
Inclui dataset da página 103
- Adiciona ./data-raw/dataset103.txt.
- Adiciona ./data/dataset103.rda.
- Adiciona ./R/dataset103.R.
- Adiciona ./man/dataset103.Rd.
```
As mensagens de *commit* devem ter verbos conjugados no presente do
indicativo (faz, completa, adiciona, remove, edita, conserta, produz,
gera, corrige, documenta, escreve, move, transforma, modifica). A
mensagem de commit, simples ou composta, não deve ultrapassar 72
caracteres de comprimento por linha.
## Como criar um *merge request*? ##
Criar um *merge request* (requisição de junção/mescla), acesse o menu
[*Merge resquest*](https://gitlab.c3sl.ufpr.br/pet-estatistica/labestData/merge_requests)
e preencha de forma semelhante ao que se faz com o *issue*.
Note que a descrição do *issue* representa o será feito e do *merge
request* o que foi de fato feito.
## Quais as exigências para aceitar um *MR*? ##
Para que um *merge request* seja aceito, 3 condições principais precisam
ser atendidas:
1. O trabalho deve estar concluído. Isso significa de o que previsto
precisa ser cumprido. Em caso de não conclusão, uma justificativa
deve ser dada e aceita.
2. O *branch* tem que ter *build sucess* (estar verde). A vantagem,
dentre muitas, da integração contínua, é permitir saber se um ramo
tem problemas de código. Se um *branch* não passa nas verificações
do *build* (está vermelho), quando deveria passar, então algo está
errado e precisa ser consertado. Se não foi possível detectar a
causa de falha no *build* comunique que inspeções já foram feitas
na tentativa de solucionar o problema (dê a trilha percorrida).
3. O trabalho deve estar em conformidade com o Guia de Estilo de
Código. Ainda que o *branch* esteja verde - com *build status*
positivo - o *merger* (pessoa responsável pelo *merge*) deve
inspecionar o seu código e verificar se está em conformidade com o
Guia de Estilo de Código. Não havendo conformidade, ele vai indicar
as correções a serem feitas.
Além dos pontos acima, um MR pode não ser aceito por precisar de
revisões/correções não relacionadas com os pontos acima. Por exemplo,
faltar declarar fatores como `factor`, incluir a unidade de medida das
variáveis, modificar o código da seção exemplos.
## Existe um *checklist* para incluir um *dataset*? ##
Na lista que segue abaixo, `dados` representa o nome do dataset e o
diretório raíz é o `/labestData`.
1. Criar o `dados.txt`. Criar o arquivo texto com os dados no
diretório `./data-raw`. Usar TAB com separador de campo, ponto
como separador decimal, sem nomes nas linhas e sem aspas.
2. Criar o `dados.rda`. Carregar o `dados.txt` e criar a imagem do
objeto (`*.rda`) no diretório `./data`. A forma mais simples é usar
a função `devtools::use_data(dados)`.
3. Escrever a documentação dos dados. Criar o arquivo `dados.R` no
diretório `./R/`. Lembre-se dos campos obrigatórios e esteja atento
das recomendações dadas na seção
[sobre documentação](#o-que-colocar-na-documentao).
4. Gerar o arquivo `dados.Rd`. Com o comando `devtools::document()`
gerar os arquivos de documentação que ficam no diretório
`./man`. Use `devtools::check_man()` para verificar se a
documentação foi escrita corretamente. Erros de grafia ou
preenchimento nos campos e ambientes são identificados aqui.
5. Por fim, execute `devtools::check()` e `devtools::build()`. Observe
se ocorrem notificações de `ERROR`, `WARNING` ou `NOTE`. Faça
correções para removê-las.
No final, considerando apenas os arquivos do `dados`, você deve ter a
essa estrutura de diretório abaixo
```
labestData/
|-- DESCRIPTION
|-- NAMESPACE
|-- data-raw/
| `-- dados.txt
|-- data/
| `-- dados.rda
|-- man/
| `-- dados.Rd
`-- R/
`-- dados.R
```
## Existe um *checklist* antes de submeter um MR? ##
1. As atividades do *issue* foram concluídas.
2. O código está de acordo com o Guia de Estilo de Código.
3. O `devtools::check()` e `devtools::build()` não executam
notificações negativas.
4. O *branch* passa na integração contínua com *build status*
positivo.
Package: labestData Package: labestData
Title: Biblioteca de Dados para Ensino de Estatística Title: Biblioteca de Dados para Aprendizado de Estatística
Version: 0.0-17.458 Version: 0.1-1.462
Date: 2016-06-27 Date: 2016-08-29
Authors@R: as.person(c( Authors@R: as.person(c(
"PET Estatística UFPR <pet.estatistica.ufpr@gmail.com> [cre]", "PET Estatística UFPR <pet.estatistica.ufpr@gmail.com> [cre]",
"Altamiro Antonio Basiewics <alfbasiewics@bol.com.br> [ctb]", "Altamiro Antonio Basiewics <alfbasiewics@bol.com.br> [ctb]",
...@@ -11,19 +11,25 @@ Authors@R: as.person(c( ...@@ -11,19 +11,25 @@ Authors@R: as.person(c(
"Daniel Ikenaga <oladani@gmail.com> [ctb]", "Daniel Ikenaga <oladani@gmail.com> [ctb]",
"Eduardo Elias Ribeiro Junior <edujrrib@gmail.com> [ctb]", "Eduardo Elias Ribeiro Junior <edujrrib@gmail.com> [ctb]",
"Gabriel Sartori Klostermann <gabrielsartori2008@gmail.com> [ctb]", "Gabriel Sartori Klostermann <gabrielsartori2008@gmail.com> [ctb]",
"Guilherme Hathy <guilhermehathy@hotmail.com> [ctb]",
"Jhenifer Caetano Veloso <jhenicaet@gmail.com> [ctb]", "Jhenifer Caetano Veloso <jhenicaet@gmail.com> [ctb]",
"Leonardo Marques <leonardommarques@gmail.com> [ctb]",
"Maria Helena Oliveira <mariaholiveira34@gmail.com> [ctb]",
"Mariana Marinho Soares <marianasoares1201@gmail.com> [ctb]",
"Monica Ludmila Hintz De Oliveira <monica.ludmila@gmail.com> [ctb]", "Monica Ludmila Hintz De Oliveira <monica.ludmila@gmail.com> [ctb]",
"Paula Alessandra Zeizer Dimas <alessandra.zeizer@gmail.com> [ctb]", "Paula Alessandra Zeizer Dimas <alessandra.zeizer@gmail.com> [ctb]",
"Vinicius César Pedroso <vinicius.cesar.pedroso@gmail.com> [ctb]",
"Alcides Conte Neto <neto_conte@hotmail.com> [ctb]", "Alcides Conte Neto <neto_conte@hotmail.com> [ctb]",
"Walmes Marques Zeviani <walmes@ufpr.br> [ctb]", "Walmes Marques Zeviani <walmes@ufpr.br> [ctb]",
"Cesar Augusto Taconeli <taconeli@ufpr.br> [ctb]")) "Cesar Augusto Taconeli <taconeli@ufpr.br> [ctb]",
"Fernando Mayer <fernandomayer@gmail.com> [ctb]"))
Description: O labestData é um projeto coletivo do PET Estatística UFPR Description: O labestData é um projeto coletivo do PET Estatística UFPR
para desenvolver um pacote R com conjuntos de dados para ensino de para desenvolver um pacote para o software R com conjuntos de dados
Estatística. O desenvolvimento do pacote visa contribuir com a para aprendizado de Estatística. O pacote visa contribuir com a
comunidade científica ao reunir, organizar, manter e disponibilizar comunidade científica ao reunir, organizar, manter e disponibilizar
conjuntos de dados disponíveis em livros, páginas de internet e conjuntos de dados presentes em livros, páginas de internet e
arquivos pessoais para o ensino-aprendizado de Estatística. arquivos pessoais para o ensino-aprendizado de Estatística. Nesta
Nesta versão o pacote tem 458 conjuntos de dados. versão o pacote tem 462 conjuntos de dados.
License: GPL-3 License: GPL-3
URL: URL:
http://gitlab.c3sl.ufpr.br/pet-estatistica/labestData, http://gitlab.c3sl.ufpr.br/pet-estatistica/labestData,
...@@ -38,6 +44,7 @@ Depends: ...@@ -38,6 +44,7 @@ Depends:
Suggests: Suggests:
lattice, lattice,
latticeExtra, latticeExtra,
colorspace,
reshape, reshape,
ggplot2, ggplot2,
car, car,
...@@ -48,6 +55,7 @@ Suggests: ...@@ -48,6 +55,7 @@ Suggests:
MASS, MASS,
qcc, qcc,
multcomp, multcomp,
vcd vcd,
zoo
VignetteBuilder: knitr VignetteBuilder: knitr
RoxygenNote: 5.0.1 RoxygenNote: 6.0.1
#' @name AndradeEg2.1
#' @title Relação entre Crescimento de Pastagem e Temperatura
#' @description Estudo sobre o relacionamento entre a taxa de
#' crescimento de uma pastagem cultivada no Planalto catarinense e a
#' temperatura do solo a 10 cm de profundidade, no período de junho
#' a novembro.
#' @format Um \code{data.frame} com 9 observações e 2 variáveis, em que
#'
#' \describe{
#'
#' \item{\code{temp}}{Temperatura do solo a 10 cm de profundidade, em
#' ºC.}
#'
#' \item{\code{tc}}{Taxa de crescimento da pastagem, em kg ha\eqn{^-1}
#' por dia.}
#'
#' }
#' @keywords RS
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Exemplo 2.1, pág. 60)
#' @examples
#'
#' data(AndradeEg2.1)
#' str(AndradeEg2.1)
#'
#' library(lattice)
#' xyplot(tc ~ temp,
#' data = AndradeEg2.1,
#' type = c("p", "r"),
#' xlab = "Temperatura do solo (ºC)",
#' ylab = expression(Taxa~de~crescimento~(kg~ha^{-1}~dia)))
#'
NULL
#' @name AndradeEg2.17
#' @title Comprimento e Peso de Camarões-Rosa (\emph{Penaeus Paulensis})
#' @description Comprimento do corpo (\eqn{X_c}) e peso (\eqn{X_p}) de
#' Camarões-Rosa fêmeas da espécie \emph{Penaeus Paulensis}, obtidos
#' nas despescas dos viveiros do Centro de Ciências Agrárias (CCA)
#' da Universidade Federal de Santa Catarina (UFSC).
#' @format Um \code{data.frame} com 18 observações e 2 variáveis, em que
#'
#' \describe{
#'
#' \item{\code{xc}}{Comprimento do corpo em milímetros.}
#'
#' \item{\code{xp}}{Peso em gramas.}
#'
#' }
#' @keywords RS
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Exemplo 2.17, pág.
#' 128)
#' @examples
#'
#' data(AndradeEg2.17)
#' str(AndradeEg2.17)
#'
#' library(lattice)
#' xyplot(jitter(xp) ~ xc,
#' data = AndradeEg2.17,
#' type = c("p", "r"),
#' xlab = "Comprimento do Corpo (em mm)",
#' ylab = "Peso (em gramas)")
#'
NULL
#' @name AndradeEg4.11
#' @title Disposição de Ninhos de Formigas (\emph{Acromyrmex striatus})
#' @description Estudo sobre como se dispõem os ninhos de formigas da
#' espécie \emph{Acromyrmex striatus}, uma espécie de formiga
#' cortadeira, em dunas da praia de Joaquina, Florianópolis, SC. A
#' condução do estudo se deu em uma área de 10.000\eqn{m^2} que foi
#' subdividida em 100 quadrantes de mesmo tamanho. Contou-se então,
#' o número de ninhos em cada um desses quadrantes. Maiores detalhes
#' sobre esse estudo estão em Lopes (2001).
#' @format Um \code{data.frame} com 5 observações e 2 variáveis, em que
#'
#' \describe{
#'
#' \item{\code{ninhos}}{Fator de 5 níveis, que representa a quantidade
#' de ninhos por quadrante.}
#'
#' \item{\code{freq}}{Frequência de quadrantes em que se observou
#' \code{ninhos} ninhos de formiga.}
#'
#' }
#' @keywords contingência*
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Exemplo 4.11, pág.
#' 228)
#' @references [REFERENCIAR O TRABALHO DO LOPES DE 2001]
#' @examples
#'
#' data(AndradeEg4.11)
#' str(AndradeEg4.11)
#'
#' # Distribuição de frequências
#' barplot(AndradeEg4.11$freq,
#' col = "darkturquoise",
#' names.arg = AndradeEg4.11$ninhos,
#' xlab = "Ninhos por Quadrante",
#' ylab = "Número de Quadrantes")
#'
NULL
#' @name AndradeEg7.5
#' @title Pesos de Pacotes de Sementes de Milho
#' @description Amostra de 15 pacotes de sementes de milho, enchidos por
#' uma máquina. Supõe-se que os pacotes enchidos por essa máquina
#' são normalmente distribuídos com desvio padrão 0,2 Kg.
#' @format Um \code{vector} numérico com 15 observações.
#' @keywords AAS
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Exemplo 7.5, pág. 324)
#' @examples
#'
#' data(AndradeEg7.5)
#' str(AndradeEg7.5)
#'
#' hist(AndradeEg7.5,
#' labels = TRUE,
#' col = "darkturquoise",
#' xlab = "Peso do Pacote (em kg)",
#' ylab = "Densidade",
#' main = NULL,
#' border = "white")
#' rug(AndradeEg7.5, lwd = 2, col = "darkturquoise")
#'
#' boxplot(AndradeEg7.5,
#' ylab = "Peso do Pacote (em kg)")
#'
#' mean(AndradeEg7.5)
#' sd(AndradeEg7.5)
#' fivenum(AndradeEg7.5)
#'
NULL
#' @name AndradeEx2.13
#' @title Estudo dos Ovos de \emph{Biomphalaria Taenagophila}
#' @description Estudo da distribuição do número de ovos inviáveis de
#' \emph{Biomphalaria taenagophila} (caramujo) em ambiente
#' poluído. Para isso tomou-se uma amostra de 23 caramujos.
#' @format Um \code{vetor} numérico com 23 observações.
#' @keywords AAS
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Capítulo 2, Exercício
#' 13, pág. 109)
#' @examples
#'
#' data(AndradeEx2.13)
#' str(AndradeEx2.13)
#'
#' hist(AndradeEx2.13,
#' labels = TRUE,
#' prob = TRUE,
#' main = NULL,
#' col = "darkturquoise",
#' ylim = c(0, 0.12),
#' xlab = "Número de Ovos",
#' ylab = "Densidade")
#'
#' lines(density(AndradeEx2.13), lwd = 2)
#'
NULL
#' @name AndradeEx4.14
#' @title Plantas Doentes no Cultivo de Mandioca
#' @description Avaliaram-se 30 parcelas (área da terra de \eqn{20
#' m^{2}}) de 27 plantas de mandioca cada uma, contabilizando o
#' número de plantas doentes colhidas.
#' @format Um \code{data.frame} com 5 observações e 2 variáveis, em que
#'
#' \describe{
#'
#' \item{\code{nplantas}}{Número de plantas doentes na parcela.}
#'
#' \item{\code{nparc}}{Número de parcelas com \code{nplantas} plantas
#' doentes.}
#'
#' }
#' @keywords contingência*
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Capítulo 4, Exercício
#' 14, pág. 239)
#' @examples
#'
#' data(AndradeEx4.14)
#' str(AndradeEx4.14)
#'
#' # Média do número de plantas doentes por parcela
#' with(AndradeEx4.14, weighted.mean(nplantas, nparc))
#'
#' # Distribuição de frequências
#' barplot(AndradeEx4.14$nparc,
#' col = "darkturquoise",
#' names.arg = AndradeEx4.14$nplantas,
#' xlab = "Número de Plantas Doentes na Parcela",
#' ylab = "Número de Parcelas")
#'
NULL
#' @name AndradeEx4.8
#' @title Número de Machos em Ninhadas de Porcos
#' @description Estudo onde foram examinadas 2.000 ninhadas de cinco
#' porcos, contabilizando o número de machos em cada.
#' @format Um \code{data.frame} com 6 observações e 2 variáveis, em que
#'
#' \describe{
#'
#' \item{\code{nmachos}}{Número de machos na ninhada de 5 porcos.}
#'
#' \item{\code{ninhadas}}{Número de ninhadas com \code{nmachos} porcos
#' machos.}
#'
#' }
#' @keywords contingência*
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Capítulo 4, Exercício
#' 8, pág. 237)
#' @examples
#'
#' data(AndradeEx4.8)
#' str(AndradeEx4.8)
#'
#' # Média de porcos machos homens por ninhada
#' with(AndradeEx4.8, weighted.mean(nmachos, ninhadas/sum(ninhadas)))
#'
#' # Distribuição de frequências
#' barplot(AndradeEx4.8$ninhadas,
#' col = "darkturquoise",
#' names.arg = AndradeEx4.8$nmachos,
#' xlab = "Número de Machos na Ninhada",
#' ylab = "Número de Ninhadas")
#'
NULL
#' @name AndradeEx4.9
#' @title Ocorrências de Plantas \emph{Primula Sinensis} Selvagens
#' @description Uma certa região florestal foi dividida em 109 parcelas
#' de mesma área (quadrados) para se estudar a distribuição das
#' plantas \emph{Primula sinensis} selvagens na região. A priori,
#' supõe-se que plantas dessa espécie distribuem-se aleatoriamente.
#' @format Um \code{data.frame} com 10 observações e 2 variáveis, em que
#'
#' \describe{
#'
#' \item{\code{nplantas}}{Número de plantas na parcela.}
#'
#' \item{\code{nparc}}{Número de parcelas com \code{nplantas} plantas.}
#'
#' }
#' @keywords contingência*
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Capítulo 4, Exercício
#' 9, pág. 238)
#' @examples
#'
#' data(AndradeEx4.9)
#' str(AndradeEx4.9)
#'
#' #' # Média do número de plantas doentes por parcela
#' with(AndradeEx4.9, weighted.mean(nplantas, nparc))
#'
#' # Distribuição de frequências
#' txt <- barplot(AndradeEx4.9$nparc,
#' col = "darkturquoise",
#' names.arg = AndradeEx4.9$nplantas,
#' xlab = "Número de Plantas no Quadrado",
#' ylab = "Número de Quadrados")
#' text(x = txt, y = AndradeEx4.9$nparc)
#'
NULL
#' @name AndradeEx7.13
#' @title Comparação de Alturas de Duas Espécies de Árvores
#' @description Estudo realizado por um agrônomo sobre o desenvolvimento
#' de duas espécies de árvores, a Bracatinga e a Canafístula. O
#' desenvolvimento foi mensurado com base na altura das árvores.
#' @format Um \code{data.frame} com 20 observações e 2 variáveis, em que
#'
#' \describe{
#'
#' \item{\code{arvore}}{Espécies da árvore.}
#'
#' \item{\code{altura}}{Altura da árvore, em metros.}
#'
#' }
#' @keywords AASI
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Capítulo 7, Exercício
#' 13, pág. 344)
#' @examples
#'
#' data(AndradeEx7.13)
#' str(AndradeEx7.13)
#'
#' with(AndradeEx7.13, by(altura, arvore, summary))
#'
#' library(lattice)
#' densityplot(~altura, groups = arvore,
#' data = AndradeEx7.13,
#' auto.key = list(
#' corner = c(0.9, 0.9),
#' title = "Espécie da árvore",
#' cex.title = 1
#' ))
#'
NULL
#' @name AndradeEx7.15
#' @title Diâmetro de Forófitos Possuidores de Bromélias \emph{Vriesea
#' incurvata}
#' @description Estudo sobre os valores de diâmetro à altura do peito
#' (DAP), em centímetros, de uma amostra piloto de forófitos,
#' árvores suporte para epífitas, possuidores de \emph{Vriesea
#' incurvata} (bromélia, conhecida como espada de Davi), em
#' vegetação primária da Floresta Tropical Atlântica, em Santo Amaro
#' da Imperatriz, SC.
#' @format Um \code{vector} numérico com 30 observações.
#' @keywords AAS
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Capítulo 7, Exercício
#' 15, pág. 346)
#' @examples
#'
#' data(AndradeEx7.15)
#' str(AndradeEx7.15)
#'
#' hist(AndradeEx7.15,
#' prob = TRUE,
#' labels = TRUE,
#' main = NULL,
#' ylim = c(0, 0.07),
#' col = "darkturquoise",
#' xlab = "DAP (cm)",
#' ylab = "Densidade")
#' lines(density(AndradeEx7.15), lwd = 2)
#'
NULL
#' @name AndradeEx7.3
#' @title Diâmetros de Árvores de Eucalipto
#' @description Estudo em que sortearam-se 30 árvores, de um povoamento
#' de eucaliptos e mensuraram-se seus diâmetros à altura do peito,
#' com a finalidade de se estimar o diâmetro médio do povoamento.
#' @format Um \code{vector} numérico com 30 observações.
#' @keywords AAS
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Capítulo 7, Exercício
#' 3, pág. 342)
#' @examples
#'
#' data(AndradeEx7.3)
#' str(AndradeEx7.3)
#'
#' hist(AndradeEx7.3,
#' prob = TRUE,
#' col = "darkturquoise",
#' xlab = "Diâmetro (em cm)",
#' ylab = "Densidade",
#' main = NULL,
#' ylim = c(0, 0.055))
#'
#' lines(density(AndradeEx7.3), lwd = 2)
#' rug(AndradeEx7.3, lwd = 2)
#'
#' boxplot(AndradeEx7.3,
#' ylab = "Diâmetro (em cm)")
#'
#' mean(AndradeEx7.3)
#' sd(AndradeEx7.3)
#' fivenum(AndradeEx7.3)
#'
NULL
#' @name AndradeEx8.11
#' @title Comparação entre o Peso Vivo e o Peso Jejum do Gado Crioulo
#' Lageano
#' @description Para comparar o peso vivo e o peso jejum do gado crioulo
#' lageano, um pesquisador selecionou aleatoriamente uma amostra de
#' 15 animais e anotou seus pesos.
#' @format Um \code{data.frame} com 30 observações e 3 variáveis, em que
#'
#' \describe{
#'
#' \item{\code{animal}}{Fator de 15 níveis qualitativos, que são
#' os animais.}
#'
#' \item{\code{estado}}{Fator de 2 níveis qualitativos, que indica
#' o estado (vivo ou jejum) em que o animal foi pesado.}
#'
#' \item{\code{peso}}{Peso do animais, em kg.}
#'
#' }
#' @keywords AASP
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Capítulo 8, Exercício
#' 11, pág. 409)
#' @examples
#'
#' data(AndradeEx8.11)
#' str(AndradeEx8.11)
#'
#' # Dados apresentados em formato largo ("wide")
#' library(reshape2)
#' (da <- dcast(AndradeEx8.11, animal ~ estado, value.var = "peso"))
#'
#' # Pares de peso para cada animal
#' library(lattice)
#' dotplot(animal ~ peso,
#' groups = estado,
#' auto.key = list(title = "Estado",
#' cex.title = 1.1,
#' columns = 2),
#' data = AndradeEx8.11,
#' xlab = "Peso (kg)",
#' ylab = "Animal")
#'
#' # Distribuição das diferenças
#' densityplot(~jejum - vivo, data = da)
#'
NULL
#' @name AndradeEx8.13
#' @title Altura de Árvores Bracatinga e Canafístula
#' @description Estudo realizado por um agrônomo sobre o desenvolvimento
#' de duas espécies de árvores, Bracatinga (\emph{Mimosa scabrella})
#' e Canafístula (\emph{Peltophorum dubium}). O objetivo é
#' verificar diferença entre o desenvolvimento das duas espécies,
#' para tal uma amostra de 30 árvores foi avaliada. O
#' desenvolvimento foi mensurado pela altura das altura das árvores.
#' @format Um \code{data.frame} com 60 observações e 2 variáveis, em que
#'
#' \describe{
#'
#' \item{\code{arvores}}{Espécie da árvore, Bracatinga ou Canafístula.}
#'
#' \item{\code{altura}}{Altura da árvore, em metros.}
#'
#' }
#' @keywords AASI
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Capítulo 8, Exercício
#' 13, pág. 410)
#' @examples
#'
#' data(AndradeEx8.13)
#' str(AndradeEx8.13)
#'
#' with(AndradeEx8.13, by(altura, arvores, summary))
#'
#' library(lattice)
#' densityplot(~altura, groups = arvores,
#' data = AndradeEx8.13,
#' auto.key = list(
#' title = "Espécies",
#' cex.title = 1,
#' corner = c(0.9, 0.95)
#' ))
#'
NULL
#' @name AndradeEx8.17
#' @title Comportamento da espécie \emph{Mandevilla velutina}
#' @description Experimento para avaliar o comportamento \emph{in vitro}
#' da espécie \emph{Mandevilla velutina} (Apocinácea), proveniente
#' de duas regiões: cerrado e restinga. Após isolar os explantes,
#' com um nó com duas gemas axilares, obtidos das plantas matrizes,
#' foi instalado o experimento em delineamento inteiramente
#' casualizado com 20 repetições (20 explantes para o cerrado de 20
#' para a restinga), totalizando 40 unidades experimentais. A
#' variável mensurada foi a altura em centímetros dos explantes de
#' \emph{Mandevilla}, cultivadas \emph{in vitro} durante 45 dias.
#' @format Um \code{data.frame} com 40 observações e 2 variáveis, em que
#'
#' \describe{
#'
#' \item{\code{regiao}}{Região da plantação (Cerrado ou Restinga).}
#'
#' \item{\code{altura}}{Altura, em centímetros, dos explantes de
#' \emph{Mandevilla} cultivadas \emph{in vitro} durante 45 dias.}
#'
#' }
#' @keywords AASI
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Capítulo 8, Exercício
#' 17, pág. 412)
#' @examples
#'
#' data(AndradeEx8.17)
#' str(AndradeEx8.17)
#'
#' with(AndradeEx8.17, by(altura, regiao, summary))
#'
#' library(lattice)
#' densityplot(~altura, groups = regiao,
#' data = AndradeEx8.17,
#' auto.key = list(
#' title = "Região",
#' cex.title = 1,
#' corner = c(0.9, 0.95)
#' ))
#'
NULL
#' @name AndradeEx8.23
#' @title Influência da Incidência Solar Sobre a Produção de Espiguetas
#' @description Estudo para verificar a influência da incidência solar
#' sobre a produção de espiguetas nas gramíneas da espécie
#' \emph{Paspalum notatum} Flügge, conhecida como grama batatais.
#' Realizou-se no estudo a contagem das espiguetas produzidas pelas
#' plantas em dois locais: adjacentes ao sol e à sombra leve.
#' @format Um \code{data.frame} com 40 observações e 2 variáveis, em que
#'
#' \describe{
#'
#' \item{\code{ambiente}}{Indica se o ambiente é iluminado ou sombrio.}
#'
#' \item{\code{espiguetas}}{Contagem de espiguetas nas gramíneas da
#' espécie \emph{Paspalum notatum} Flügge.}
#'
#' }
#' @keywords AASI
#' @source Andrade, D. F., Ogliari, P. J. (2010). Estatística para as
#' ciências agrárias e biológicas com noções de experimentação (2nd
#' ed.). Florianópolis, SC. Editora da UFSC. (Capítulo 8, Exercício
#' 23, pág. 414)
#' @examples
#'
#' data(AndradeEx8.23)
#' str(AndradeEx8.23)
#'
#' with(AndradeEx8.23, by(espiguetas, ambiente, summary))
#'
#' library(lattice)
#' densityplot(~espiguetas, groups = ambiente,
#' data = AndradeEx8.23,
#' auto.key = list(
#' title = "Ambiente",
#' cex.title = 1,
#' corner = c(0.9, 0.95)
#' ))
#'
NULL