O R
vem com as configurações mínimas ao ser
instalado. Para realizar tarefas mais específicas pode ser necessário
instalar pacotes adicionais (packages), clicando em
“pacotes>>instalar pacotes”;
É necessário escolher o CRAN (Comprehensive R Archive Network), que são arquivos disponibilizados na rede por diversas IES do mundo inteiro, inclusive do Brasil.
O R é case-sensitive, isto é, ele diferencia letras minúsculas de maiúsculas;
O separador de casas decimais é o “.”;
A vírgula é usada para separar argumentos;
O prompt do R
é o sinal de maior “>”;
Após instalarmos algum pacote sempre será necessário carregá-lo
com o comando: library("nome do pacote")
;
Para verificar como citar o pacote instalado digite:
citation("nome do pacote")
;
Para obter ajuda dos arquivos do R
use o comando
help(nome da função)
.
Exemplos:
# help(sqrt) #ajuda sobre a função raiz quadrada
# help(lm) # ajuda sobre a função linear models
# citation("ggplot2") # mostra como o pacote deve ser citado
#demo(graphics) #pressione Enter
#demo(persp)
#demo(image)
Um pacote amplamente utilizado para contrução de gráficos é o
ggplot
# soma
2+2-(2+6)+(2)
## [1] -2
# multiplicação
6 + (6*78)
## [1] 474
# Divisão
4/(3+2)
## [1] 0.8
# potência
2**3
## [1] 8
2^3
## [1] 8
2^(3)
## [1] 8
R
nome da função ( )
\(\rightarrow\) dentro dos parênteses colocamos os argumentos da função.
\(\rightarrow\) os argumentos são separados por vírgula.
Exemplos:
mean(...)
: calcula a média aritmética.
sd(...)
: calcula o desvio padrão.
lm(...)
: estima os parâmetros de um modelo de regressão
linear.
Vamos crias um vetor de notas de 10 alunos da turma. A função
length(notas)
fornece o número de observações (n) dentro do
objeto.
OBS: o comando <-
significa assinalar; o
comando c
significa concatenar (colocar
junto).
notas = c(9,6,8,5,7,8,6,9,10,6)
print(notas)
## [1] 9 6 8 5 7 8 6 9 10 6
length(notas)
## [1] 10
Para objetos com letras (variáveis qualitativas), basta colocar cada observação entre aspas.
Para listar quais objetos temos salvo utiliza-se a função
ls()
.
Para remover um objeto: rm("nome do objeto")
.
letras<-c("a","b","c","d")
print(letras)
## [1] "a" "b" "c" "d"
ls()
## [1] "letras" "notas"
Imagine que queremos saber qual o maior número entre dois objetos
n1
e n2
. Uma condicionante interessante no
R
é o ifelse
.
1<5 # menor
## [1] TRUE
2==2 # igual
## [1] TRUE
sqrt(25) != 6 # diferente
## [1] TRUE
n1 = 8
n2 = 8.1
teste = n1>n2
teste
## [1] FALSE
ifelse(teste, "n1 maior que n2","n2 é maior que n1")
## [1] "n2 é maior que n1"
Quando não há uma função pronta no R
podemos fazer uma a
partir da função function(...)
.
maior <- function(n1,n2){
teste1 <- n1 > n2
ifelse(teste1,"n1 é maior","n2 é maior")
}
Agora podemos usar essa nova função com seus respectivos argumentos (n1 e n2) e o resultado retornará o maior número.
maior(5,6)
## [1] "n2 é maior"
maior(7,0)
## [1] "n1 é maior"
maior(2^4, sqrt(100))
## [1] "n1 é maior"
# queremos ver todos os números de 1 a 1000
# que são divisíveis por 13 e por 7 ao mesmo tempo.
for (i in 1:1000 ) {
if((i %% 13 == 0) & (i %% 7 == 0))
print(i)
}
## [1] 91
## [1] 182
## [1] 273
## [1] 364
## [1] 455
## [1] 546
## [1] 637
## [1] 728
## [1] 819
## [1] 910
O while executa as tarefas repetidamente até que uma condição seja satisfeita, não percorrendo um vetor.
i <- 1
while(i <= 5){
print(i)
i = i + 1
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
data.table
: extensão do
data.frame
Sintaxe: DT[ i , j , by ]
Vamos fazer algumas manipulações no bando de dados
iris
.
library(data.table) # carregando o pacote já instalado
data("iris") # carregando o banco de dados iris do R base
iris_dt <- as.data.table(iris) # atribuindo o BD a um objeto DT
str(iris_dt)
## Classes 'data.table' and 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
## - attr(*, ".internal.selfref")=<externalptr>
# dataframe
iris[1:3,]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
# datatable
iris_dt[1:3]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1: 5.1 3.5 1.4 0.2 setosa
## 2: 4.9 3.0 1.4 0.2 setosa
## 3: 4.7 3.2 1.3 0.2 setosa
# encontrar linhas onde Species=="setosa"
# dataframe
iris[iris$Species=="setosa",]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
## 7 4.6 3.4 1.4 0.3 setosa
## 8 5.0 3.4 1.5 0.2 setosa
## 9 4.4 2.9 1.4 0.2 setosa
## 10 4.9 3.1 1.5 0.1 setosa
## 11 5.4 3.7 1.5 0.2 setosa
## 12 4.8 3.4 1.6 0.2 setosa
## 13 4.8 3.0 1.4 0.1 setosa
## 14 4.3 3.0 1.1 0.1 setosa
## 15 5.8 4.0 1.2 0.2 setosa
## 16 5.7 4.4 1.5 0.4 setosa
## 17 5.4 3.9 1.3 0.4 setosa
## 18 5.1 3.5 1.4 0.3 setosa
## 19 5.7 3.8 1.7 0.3 setosa
## 20 5.1 3.8 1.5 0.3 setosa
## 21 5.4 3.4 1.7 0.2 setosa
## 22 5.1 3.7 1.5 0.4 setosa
## 23 4.6 3.6 1.0 0.2 setosa
## 24 5.1 3.3 1.7 0.5 setosa
## 25 4.8 3.4 1.9 0.2 setosa
## 26 5.0 3.0 1.6 0.2 setosa
## 27 5.0 3.4 1.6 0.4 setosa
## 28 5.2 3.5 1.5 0.2 setosa
## 29 5.2 3.4 1.4 0.2 setosa
## 30 4.7 3.2 1.6 0.2 setosa
## 31 4.8 3.1 1.6 0.2 setosa
## 32 5.4 3.4 1.5 0.4 setosa
## 33 5.2 4.1 1.5 0.1 setosa
## 34 5.5 4.2 1.4 0.2 setosa
## 35 4.9 3.1 1.5 0.2 setosa
## 36 5.0 3.2 1.2 0.2 setosa
## 37 5.5 3.5 1.3 0.2 setosa
## 38 4.9 3.6 1.4 0.1 setosa
## 39 4.4 3.0 1.3 0.2 setosa
## 40 5.1 3.4 1.5 0.2 setosa
## 41 5.0 3.5 1.3 0.3 setosa
## 42 4.5 2.3 1.3 0.3 setosa
## 43 4.4 3.2 1.3 0.2 setosa
## 44 5.0 3.5 1.6 0.6 setosa
## 45 5.1 3.8 1.9 0.4 setosa
## 46 4.8 3.0 1.4 0.3 setosa
## 47 5.1 3.8 1.6 0.2 setosa
## 48 4.6 3.2 1.4 0.2 setosa
## 49 5.3 3.7 1.5 0.2 setosa
## 50 5.0 3.3 1.4 0.2 setosa
#datatable
iris_dt[Species=="setosa"]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1: 5.1 3.5 1.4 0.2 setosa
## 2: 4.9 3.0 1.4 0.2 setosa
## 3: 4.7 3.2 1.3 0.2 setosa
## 4: 4.6 3.1 1.5 0.2 setosa
## 5: 5.0 3.6 1.4 0.2 setosa
## 6: 5.4 3.9 1.7 0.4 setosa
## 7: 4.6 3.4 1.4 0.3 setosa
## 8: 5.0 3.4 1.5 0.2 setosa
## 9: 4.4 2.9 1.4 0.2 setosa
## 10: 4.9 3.1 1.5 0.1 setosa
## 11: 5.4 3.7 1.5 0.2 setosa
## 12: 4.8 3.4 1.6 0.2 setosa
## 13: 4.8 3.0 1.4 0.1 setosa
## 14: 4.3 3.0 1.1 0.1 setosa
## 15: 5.8 4.0 1.2 0.2 setosa
## 16: 5.7 4.4 1.5 0.4 setosa
## 17: 5.4 3.9 1.3 0.4 setosa
## 18: 5.1 3.5 1.4 0.3 setosa
## 19: 5.7 3.8 1.7 0.3 setosa
## 20: 5.1 3.8 1.5 0.3 setosa
## 21: 5.4 3.4 1.7 0.2 setosa
## 22: 5.1 3.7 1.5 0.4 setosa
## 23: 4.6 3.6 1.0 0.2 setosa
## 24: 5.1 3.3 1.7 0.5 setosa
## 25: 4.8 3.4 1.9 0.2 setosa
## 26: 5.0 3.0 1.6 0.2 setosa
## 27: 5.0 3.4 1.6 0.4 setosa
## 28: 5.2 3.5 1.5 0.2 setosa
## 29: 5.2 3.4 1.4 0.2 setosa
## 30: 4.7 3.2 1.6 0.2 setosa
## 31: 4.8 3.1 1.6 0.2 setosa
## 32: 5.4 3.4 1.5 0.4 setosa
## 33: 5.2 4.1 1.5 0.1 setosa
## 34: 5.5 4.2 1.4 0.2 setosa
## 35: 4.9 3.1 1.5 0.2 setosa
## 36: 5.0 3.2 1.2 0.2 setosa
## 37: 5.5 3.5 1.3 0.2 setosa
## 38: 4.9 3.6 1.4 0.1 setosa
## 39: 4.4 3.0 1.3 0.2 setosa
## 40: 5.1 3.4 1.5 0.2 setosa
## 41: 5.0 3.5 1.3 0.3 setosa
## 42: 4.5 2.3 1.3 0.3 setosa
## 43: 4.4 3.2 1.3 0.2 setosa
## 44: 5.0 3.5 1.6 0.6 setosa
## 45: 5.1 3.8 1.9 0.4 setosa
## 46: 4.8 3.0 1.4 0.3 setosa
## 47: 5.1 3.8 1.6 0.2 setosa
## 48: 4.6 3.2 1.4 0.2 setosa
## 49: 5.3 3.7 1.5 0.2 setosa
## 50: 5.0 3.3 1.4 0.2 setosa
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# encontrar linhas onde Species=="setosa" e Sepal.Length==5
#dataframe
iris[iris$Species=="setosa" & iris$Sepal.Length==5,]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 5 5 3.6 1.4 0.2 setosa
## 8 5 3.4 1.5 0.2 setosa
## 26 5 3.0 1.6 0.2 setosa
## 27 5 3.4 1.6 0.4 setosa
## 36 5 3.2 1.2 0.2 setosa
## 41 5 3.5 1.3 0.3 setosa
## 44 5 3.5 1.6 0.6 setosa
## 50 5 3.3 1.4 0.2 setosa
#datatable
iris_dt[Species=="setosa" & Sepal.Length==5]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1: 5 3.6 1.4 0.2 setosa
## 2: 5 3.4 1.5 0.2 setosa
## 3: 5 3.0 1.6 0.2 setosa
## 4: 5 3.4 1.6 0.4 setosa
## 5: 5 3.2 1.2 0.2 setosa
## 6: 5 3.5 1.3 0.3 setosa
## 7: 5 3.5 1.6 0.6 setosa
## 8: 5 3.3 1.4 0.2 setosa
iris[, c("Species", "Petal.Width", "Petal.Length")]
## Species Petal.Width Petal.Length
## 1 setosa 0.2 1.4
## 2 setosa 0.2 1.4
## 3 setosa 0.2 1.3
## 4 setosa 0.2 1.5
## 5 setosa 0.2 1.4
## 6 setosa 0.4 1.7
## 7 setosa 0.3 1.4
## 8 setosa 0.2 1.5
## 9 setosa 0.2 1.4
## 10 setosa 0.1 1.5
## 11 setosa 0.2 1.5
## 12 setosa 0.2 1.6
## 13 setosa 0.1 1.4
## 14 setosa 0.1 1.1
## 15 setosa 0.2 1.2
## 16 setosa 0.4 1.5
## 17 setosa 0.4 1.3
## 18 setosa 0.3 1.4
## 19 setosa 0.3 1.7
## 20 setosa 0.3 1.5
## 21 setosa 0.2 1.7
## 22 setosa 0.4 1.5
## 23 setosa 0.2 1.0
## 24 setosa 0.5 1.7
## 25 setosa 0.2 1.9
## 26 setosa 0.2 1.6
## 27 setosa 0.4 1.6
## 28 setosa 0.2 1.5
## 29 setosa 0.2 1.4
## 30 setosa 0.2 1.6
## 31 setosa 0.2 1.6
## 32 setosa 0.4 1.5
## 33 setosa 0.1 1.5
## 34 setosa 0.2 1.4
## 35 setosa 0.2 1.5
## 36 setosa 0.2 1.2
## 37 setosa 0.2 1.3
## 38 setosa 0.1 1.4
## 39 setosa 0.2 1.3
## 40 setosa 0.2 1.5
## 41 setosa 0.3 1.3
## 42 setosa 0.3 1.3
## 43 setosa 0.2 1.3
## 44 setosa 0.6 1.6
## 45 setosa 0.4 1.9
## 46 setosa 0.3 1.4
## 47 setosa 0.2 1.6
## 48 setosa 0.2 1.4
## 49 setosa 0.2 1.5
## 50 setosa 0.2 1.4
## 51 versicolor 1.4 4.7
## 52 versicolor 1.5 4.5
## 53 versicolor 1.5 4.9
## 54 versicolor 1.3 4.0
## 55 versicolor 1.5 4.6
## 56 versicolor 1.3 4.5
## 57 versicolor 1.6 4.7
## 58 versicolor 1.0 3.3
## 59 versicolor 1.3 4.6
## 60 versicolor 1.4 3.9
## 61 versicolor 1.0 3.5
## 62 versicolor 1.5 4.2
## 63 versicolor 1.0 4.0
## 64 versicolor 1.4 4.7
## 65 versicolor 1.3 3.6
## 66 versicolor 1.4 4.4
## 67 versicolor 1.5 4.5
## 68 versicolor 1.0 4.1
## 69 versicolor 1.5 4.5
## 70 versicolor 1.1 3.9
## 71 versicolor 1.8 4.8
## 72 versicolor 1.3 4.0
## 73 versicolor 1.5 4.9
## 74 versicolor 1.2 4.7
## 75 versicolor 1.3 4.3
## 76 versicolor 1.4 4.4
## 77 versicolor 1.4 4.8
## 78 versicolor 1.7 5.0
## 79 versicolor 1.5 4.5
## 80 versicolor 1.0 3.5
## 81 versicolor 1.1 3.8
## 82 versicolor 1.0 3.7
## 83 versicolor 1.2 3.9
## 84 versicolor 1.6 5.1
## 85 versicolor 1.5 4.5
## 86 versicolor 1.6 4.5
## 87 versicolor 1.5 4.7
## 88 versicolor 1.3 4.4
## 89 versicolor 1.3 4.1
## 90 versicolor 1.3 4.0
## 91 versicolor 1.2 4.4
## 92 versicolor 1.4 4.6
## 93 versicolor 1.2 4.0
## 94 versicolor 1.0 3.3
## 95 versicolor 1.3 4.2
## 96 versicolor 1.2 4.2
## 97 versicolor 1.3 4.2
## 98 versicolor 1.3 4.3
## 99 versicolor 1.1 3.0
## 100 versicolor 1.3 4.1
## 101 virginica 2.5 6.0
## 102 virginica 1.9 5.1
## 103 virginica 2.1 5.9
## 104 virginica 1.8 5.6
## 105 virginica 2.2 5.8
## 106 virginica 2.1 6.6
## 107 virginica 1.7 4.5
## 108 virginica 1.8 6.3
## 109 virginica 1.8 5.8
## 110 virginica 2.5 6.1
## 111 virginica 2.0 5.1
## 112 virginica 1.9 5.3
## 113 virginica 2.1 5.5
## 114 virginica 2.0 5.0
## 115 virginica 2.4 5.1
## 116 virginica 2.3 5.3
## 117 virginica 1.8 5.5
## 118 virginica 2.2 6.7
## 119 virginica 2.3 6.9
## 120 virginica 1.5 5.0
## 121 virginica 2.3 5.7
## 122 virginica 2.0 4.9
## 123 virginica 2.0 6.7
## 124 virginica 1.8 4.9
## 125 virginica 2.1 5.7
## 126 virginica 1.8 6.0
## 127 virginica 1.8 4.8
## 128 virginica 1.8 4.9
## 129 virginica 2.1 5.6
## 130 virginica 1.6 5.8
## 131 virginica 1.9 6.1
## 132 virginica 2.0 6.4
## 133 virginica 2.2 5.6
## 134 virginica 1.5 5.1
## 135 virginica 1.4 5.6
## 136 virginica 2.3 6.1
## 137 virginica 2.4 5.6
## 138 virginica 1.8 5.5
## 139 virginica 1.8 4.8
## 140 virginica 2.1 5.4
## 141 virginica 2.4 5.6
## 142 virginica 2.3 5.1
## 143 virginica 1.9 5.1
## 144 virginica 2.3 5.9
## 145 virginica 2.5 5.7
## 146 virginica 2.3 5.2
## 147 virginica 1.9 5.0
## 148 virginica 2.0 5.2
## 149 virginica 2.3 5.4
## 150 virginica 1.8 5.1
#datatable
iris_dt[,.(Species,Petal.Width,Petal.Length)]
## Species Petal.Width Petal.Length
## 1: setosa 0.2 1.4
## 2: setosa 0.2 1.4
## 3: setosa 0.2 1.3
## 4: setosa 0.2 1.5
## 5: setosa 0.2 1.4
## ---
## 146: virginica 2.3 5.2
## 147: virginica 1.9 5.0
## 148: virginica 2.0 5.2
## 149: virginica 2.3 5.4
## 150: virginica 1.8 5.1
# Número de observações por Species
#dataframe
table(iris$Species)
##
## setosa versicolor virginica
## 50 50 50
data.frame(table(iris$Species))
## Var1 Freq
## 1 setosa 50
## 2 versicolor 50
## 3 virginica 50
#datatable
iris_dt[,.N,Species]
## Species N
## 1: setosa 50
## 2: versicolor 50
## 3: virginica 50
### Calculando a méda de Sepal.Length
#dataframe
mean(iris$Sepal.Length)
## [1] 5.843333
#datatable
iris_dt[,mean(Sepal.Length)]
## [1] 5.843333
# Calculando a média de Sepal.Length por Species
#dataframe
aggregate(Sepal.Length ~ Species, iris, mean)
## Species Sepal.Length
## 1 setosa 5.006
## 2 versicolor 5.936
## 3 virginica 6.588
#datatable
iris_dt[,mean(Sepal.Length),.(Species)]
## Species V1
## 1: setosa 5.006
## 2: versicolor 5.936
## 3: virginica 6.588
# calculando a média Sepal.Length por Species onde Sepal.Width >= 3
#dataframe
aggregate(Sepal.Length ~ Species, iris[iris$Sepal.Width>=3,],mean)
## Species Sepal.Length
## 1 setosa 5.029167
## 2 versicolor 6.218750
## 3 virginica 6.768966
#datable
iris_dt[Sepal.Width>=3,mean(Sepal.Length),Species]
## Species V1
## 1: setosa 5.029167
## 2: versicolor 6.218750
## 3: virginica 6.768966
# Calculando a média de sepal length por Sepal.Width > 3 e Sepal.Width <= 3
iris_dt[,mean(Sepal.Length),.(width_maior_3=Sepal.Width>3)]
## width_maior_3 V1
## 1: TRUE 5.683582
## 2: FALSE 5.972289
# criando novas variáveis
iris_dt[,razao := Petal.Width/Petal.Length]
head(iris_dt)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species razao
## 1: 5.1 3.5 1.4 0.2 setosa 0.1428571
## 2: 4.9 3.0 1.4 0.2 setosa 0.1428571
## 3: 4.7 3.2 1.3 0.2 setosa 0.1538462
## 4: 4.6 3.1 1.5 0.2 setosa 0.1333333
## 5: 5.0 3.6 1.4 0.2 setosa 0.1428571
## 6: 5.4 3.9 1.7 0.4 setosa 0.2352941