Prof. Lorenzo Zanette - l.zanette@ufc.br
Abrir novo script no R Studio (ícone com “+”)
Checar a área de trabalho
Para mandar a linha de comando para o console do R e executá-la teclar: “Ctrl+R” ou “Ctrl+Enter”
## character(0)
Para chamar a ajuda utilizar ?comando ex. ?ls
Se área de trabalho contiver objeto(s) indesajado(s) utlizar a função “rm”, ex: rm("objeto indesajo") para removê-lo(s)
## [1] 22
[1] Indica posição no objeto, neste caso um vetor com apenas uma posição
## [1] 19 20 13 14 23
para alocar valores - independente de sua origem - dentro de um objeto utilizar a “seta” <-
nome_do_vetor <- (“tudo q vc quizer colocar dentro do vetor”)
função(“tudo q vc quiser que a função use”)
nome_do_vetor <- função(“tudo q vc quiser que a função use”)
utilizar " " para caracteres não numéricos, ex. "texto"
não utilizar espaços, ex. "Dom Pedro", mas sim "Dom_Pedro"
separar decimais com pontos, ex. "1.23", e não "1,23"
para fazer comentários no script use #
## [1] "amostra" "obs1"
## Warning in rm(amostra, obs): object 'obs' not found
Variável:Medida para cada observação individual
- Quantitativas
## [1] 5 3 4 7 6 5 4 8 6 3
## [1] 3.0 2.8 3.2 3.9 3.5 3.6 3.7 3.3 2.9 2.6
- Qualitativas
b.1.Ordenadas
b.1.a.“Informativas”
## [1] "grande" "media" "pequena"
## [1] 3 2 1
## [1] 5 4 3 2 1
## ovos pesogalin
## [1,] 5 3.0
## [2,] 3 2.8
## [3,] 4 3.2
## [4,] 7 3.9
## [5,] 6 3.5
## [6,] 5 3.6
## [7,] 4 3.7
## [8,] 8 3.3
## [9,] 6 2.9
## [10,] 3 2.6
b.1.b “Não tão informativas”
## [1] "Do_Caja" "Do_Pedro" "Do_PPAmarelo"
## [1] "amarela" "branca" "preta"
## [1] "cor1" "cor2" "cor3"
## [1] "colores" "cores" "desgaste_penas" "grandeza"
## [5] "granja" "obs1" "ovos" "pesogalin"
## [9] "sitio" "tamanho"
## [1] 3.0 2.8 3.2 3.9 3.5 3.6 3.7 3.3 2.9 2.6
## [1] 5 3 4 7 6 5 4 8 6 3
#Usamos *par* para dividir a área de gráficos, neste caso em 1 linha e 3 colunas
par(mfrow=c(1,3))
barplot(ovos,names.arg=c(1:10),las=1)
hist(ovos,las=1)
plot(ovos,las=1,col="blue",pch=21)Atentem para o histograma com variável discreta - comparem com o hist. da var. contínua
barplot e hist ?R:Vejamos empíricamente
#dividimos área gráfica em 2 linhas e 1 coluna
par(mfrow=c(2,1))
barplot(pesogalin)
# removemos título do gráfico com: **main=""** e alteramos eixo y com **las=1**
hist(pesogalin,main="",las=1)Ou seja, barplot gera um gráfico de barras em que valores são representados individualmente (por
amostra) e hist um histograma, onde dados são “resumidos” em frequências de intervalos definidos
(categorias), alterando o no. de breaksaltermos o número de intervalos
Valor real ~ Valor medido
Qual amostra é mais precisa? Por quê?
| Obs | Peso | Galinha |
|---|---|---|
| 1 | 3.2 | 1 |
| 2 | 3.3 | 1 |
| 3 | 3.1 | 1 |
| 1 | 3.2 | 2 |
| 2 | 3.2 | 2 |
| 3 | 3.3 | 2 |
## [1] 3.0 2.8 3.2 3.9 3.5 3.6 3.7 3.3 2.9 2.6
## [1] 2.77 2.75 2.66 3.54 3.50 3.10 3.80 3.37 2.70 3.85
max_pg1<-c(3.05,2.85,3.25,3.95,3.55,3.65,3.75,3.35,2.95,2.65)
min_pg1<-c(2.95,2.75,3.15,3.85,3.45,3.55,3.65,3.25,2.85,2.55)
intervalo<-max_pg1-min_pg1
tabela_p1<-data.frame(pesogalin_p1,max_pg1,min_pg1,intervalo)
tabela_p1## pesogalin_p1 max_pg1 min_pg1 intervalo
## 1 3.0 3.05 2.95 0.1
## 2 2.8 2.85 2.75 0.1
## 3 3.2 3.25 3.15 0.1
## 4 3.9 3.95 3.85 0.1
## 5 3.5 3.55 3.45 0.1
## 6 3.6 3.65 3.55 0.1
## 7 3.7 3.75 3.65 0.1
## 8 3.3 3.35 3.25 0.1
## 9 2.9 2.95 2.85 0.1
## 10 2.6 2.65 2.55 0.1
# Uma precisão 2 x menor nos leva a um intervalo entre max e min 2x maior, i.e. 0.2
# Portanto, para cada amostra de pesogalin_p2 adicionamos e subtraimos 0.1 para obter valores max e min
max_pg2<-pesogalin_p2+0.1
min_pg2<-pesogalin_p2-0.1
intervalo<-max_pg2-min_pg2
tabela_p2<-data.frame(pesogalin_p2,max_pg2,min_pg2,intervalo)
tabela_p2## pesogalin_p2 max_pg2 min_pg2 intervalo
## 1 2.77 2.87 2.67 0.2
## 2 2.75 2.85 2.65 0.2
## 3 2.66 2.76 2.56 0.2
## 4 3.54 3.64 3.44 0.2
## 5 3.50 3.60 3.40 0.2
## 6 3.10 3.20 3.00 0.2
## 7 3.80 3.90 3.70 0.2
## 8 3.37 3.47 3.27 0.2
## 9 2.70 2.80 2.60 0.2
## 10 3.85 3.95 3.75 0.2
Agora nosso intervalo é 2 x maior, ou seja temos uma precisão 2 x menor.
## [1] "colores" "cores" "desgaste_penas" "grandeza"
## [5] "granja" "intervalo" "max_pg1" "max_pg2"
## [9] "min_pg1" "min_pg2" "obs1" "ovos"
## [13] "pesogalin" "pesogalin_p1" "pesogalin_p2" "sitio"
## [17] "tabela_p1" "tabela_p2" "tamanho"
## character(0)
## count spray
## 1 10 A
## 2 7 A
## 3 20 A
## 4 14 A
## 5 14 A
## 6 12 A
## 7 10 A
## 8 23 A
## 9 17 A
## 10 20 A
## 11 14 A
## 12 13 A
## mortes marcas
## 1 10 A
## 2 7 A
## 3 20 A
## 4 14 A
## 5 14 A
## 6 12 A
## 7 10 A
## 8 23 A
## 9 17 A
## 10 20 A
## 11 14 A
## 12 13 A
## [1] "mortes" "marcas"
O comando
attachpermite utilizar o nome das váriaveis diretamente, mas pode gerar confusão caso variáveis tenham nomes iguais em objetos diferentes que também estão na área de funções. Para verificar quem está lá utilizarsearch()
Como ordenar os dados?
rank(mortes)->ranque
sort(mortes)->ordenado
order(mortes)->ordem
ver<-data.frame(mortes,ranque,ordenado,ordem)
ver## mortes ranque ordenado ordem
## 1 10 2.5 7 2
## 2 7 1.0 10 1
## 3 20 10.5 10 7
## 4 14 7.0 12 6
## 5 14 7.0 13 12
## 6 12 4.0 14 4
## 7 10 2.5 14 5
## 8 23 12.0 14 11
## 9 17 9.0 17 9
## 10 20 10.5 20 3
## 11 14 7.0 20 10
## 12 13 5.0 23 8
## count spray
## 13 11 B
## 14 17 B
## 15 21 B
## 16 11 B
## 17 16 B
## 18 14 B
## 19 17 B
## 20 17 B
## 21 19 B
## 22 21 B
## 23 7 B
## 24 13 B
## count spray
## 25 0 C
## 26 1 C
## 27 7 C
## 28 2 C
## 29 3 C
## 30 1 C
## 31 2 C
## 32 1 C
## 33 3 C
## 34 0 C
## 35 1 C
## 36 4 C
# para ordenar os dados, não obter a ordem dos mesmos...
# parâmetro 'decreasing = TRUE' para ser decrescente
sort(inseticida2$count,decreasing = T)## [1] 21 21 19 17 17 17 16 14 13 11 11 7
## [1] 7 4 3 3 2 2 1 1 1 1 0 0
## [1] "list"
## count spray
## 13 11 B
## 14 17 B
## 15 21 B
## 16 11 B
## 17 16 B
## 18 14 B
## 19 17 B
## 20 17 B
## 21 19 B
## 22 21 B
## 23 7 B
## 24 13 B
# e finalmente podemos ordernar a tabela toda de forma decrescente
inseticida2[order(inseticida2$count,decreasing = T),]## count spray
## 15 21 B
## 22 21 B
## 21 19 B
## 14 17 B
## 19 17 B
## 20 17 B
## 17 16 B
## 18 14 B
## 24 13 B
## 13 11 B
## 16 11 B
## 23 7 B
Agora, vamos obter mais dados…
## count spray
## 49 3 E
## 50 5 E
## 51 3 E
## 52 5 E
## 53 3 E
## 54 6 E
## 55 1 E
## 56 1 E
## 57 3 E
## 58 2 E
## 59 6 E
## 60 4 E
## 61 11 F
## 62 9 F
## 63 15 F
## 64 22 F
## 65 15 F
## 66 16 F
## 67 13 F
## 68 10 F
## 69 26 F
## 70 26 F
## 71 24 F
## 72 13 F
# usamos "[ ]" para selecionar partes de um vetor/tabela (neste caso inseticida4), podemos usar
# condições, por ex spray="E" para selecionar todas as linhas onde essa condição é atendida.
# Depois da "," deixamos vazio para indicar que queremos todas as colunas
# Finalmente, basta alocar esses dados para tabelas separadas
inseticida4E<-inseticida4[inseticida4$spray=="E",]
inseticida4F<-inseticida4[inseticida4$spray=="F",]
inseticida4E## count spray
## 49 3 E
## 50 5 E
## 51 3 E
## 52 5 E
## 53 3 E
## 54 6 E
## 55 1 E
## 56 1 E
## 57 3 E
## 58 2 E
## 59 6 E
## 60 4 E
## count spray
## 61 11 F
## 62 9 F
## 63 15 F
## 64 22 F
## 65 15 F
## 66 16 F
## 67 13 F
## 68 10 F
## 69 26 F
## 70 26 F
## 71 24 F
## 72 13 F
## count spray
## 13 11 B
## 14 17 B
## 15 21 B
## 16 11 B
## 17 16 B
## 18 14 B
## 19 17 B
## 20 17 B
## 21 19 B
## 22 21 B
## 23 7 B
## 24 13 B
## 49 3 E
## 50 5 E
## 51 3 E
## 52 5 E
## 53 3 E
## 54 6 E
## 55 1 E
## 56 1 E
## 57 3 E
## 58 2 E
## 59 6 E
## 60 4 E
## 61 11 F
## 62 9 F
## 63 15 F
## 64 22 F
## 65 15 F
## 66 16 F
## 67 13 F
## 68 10 F
## 69 26 F
## 70 26 F
## 71 24 F
## 72 13 F
## [1] "count" "spray"
## [1] E E E E E E E E E E E E B F F B B F B F F B F F B F B B B B B B F F F F
## Levels: A B C D E F
spray[order(count)]?# Se ordernarmos apenas os valores em 'count', percebemos que o comando é semelhante...
count[order(count)]## [1] 1 1 2 3 3 3 3 4 5 5 6 6 7 9 10 11 11 11 13 13 13 14 15 15 16
## [26] 16 17 17 17 19 21 21 22 24 26 26
# ele retorna os valores de "count" usando a ordem dos valores em "count"
# o mesmo é obtido diretamente pelo comando 'sort'
sort(count)## [1] 1 1 2 3 3 3 3 4 5 5 6 6 7 9 10 11 11 11 13 13 13 14 15 15 16
## [26] 16 17 17 17 19 21 21 22 24 26 26
# O resultado de 'spray[order(count)]', portanto, são os valores de "spray", neste caso
# categorias listadas conforme a ordem crescente dos valores de "count". Permite visualizar
# a eficência dos inseticidas.
spray[order(count)]## [1] E E E E E E E E E E E E B F F B B F B F F B F F B F B B B B B B F F F F
## Levels: A B C D E F