R é uma linguagem de programação orientada a objetos (POO), isto significa que a variável que atribuimos um determinado valor pode também armazenar estruturas mais complexas e que as funções podem responder de maneira diferente à variáveis com diferentes estruruas. Objetos (variáveis) com uma mesma estrutura, são ditos de possuirem uma mesma classe, enquanto funções quem responde de maneira diferente à classe do objeto são chamadas de métodos.
A linguagem R, com o passar dos anos, passou cada vez mais sendo absorvida pela comunidade de estatísticos como ferramenta de programação e pela comunidade de programadores para a análise de dados. Dentre as razões que justificam essa seleção estão o fato do R ser livre e gratuito; possuir excelentes bibliotecas para visualização de dados (gráficos, mapas, diagramas) e ter sua filosofia direcionada para a análise dados, fato que em muito impacta a forma com que a funções retornam suas respostas e a maneira com que os dados são manipulados.
Conforme novos pacotes de função foram sendo desenvolvidos, a linguagem R passou a galgar novos horizontes. Técnicas de webscraping (extração de dados de páginas da web de forma automatizada) foram implementadas, análises de imagem e vídeo passaram a estar disponíveis, e pacotes para desenvolvimento de aplicativos web (shiny) tornaram o potencial do R disponível para o público em geral.
A versão mais atual do R pode ser obtida no site do R-Project. Caso seu computador seja:
Com o instalador baixado inicie a instalação, não há necessidade de alterar nenhuma modificação.
O terminal de programação do R é bem feio antiguado. E por não permitir de forma organizada a visualização do console e do script, acaba por complicar mais do que ajudar. Por isso utilizaremos o software RStudio!
O RStudio é a IDE mais popular para uso do R, seu visual permite a acompanhar o script, o console, gráficos e objetos em uma única tela.
Para download do Rstudio clique nos itens a seguir:
Para rodar qualquer código no RStudio, tem-se como opções:
Escrever diretamente no console e dar um
Escrever o código no console, selecionar as linhas de código de interesse e então:
Teste as diferentes opções com a operação de atribuição descrita abaixo:
a = 2 # Atribuição com sinal de igualdade
b <- 2 # Atribuição com seta (adotado pelos programadores de R)As operações matemáticas são as usuais utilizadas em outras linguagens.
x <- 2/3 - 3*(4^2) + 7
x## [1] -40.33333
O R possui diferentes objetos/estruturas para armazenar dados, em nossas aulas, utilizaremos principalmente os Vetores e dataframes (tabelas).
Vetores são criados com a função c, de concatenar com seus elementos separados por vírgulas.
vetor_1 <- c(2,3,6)
vetor_2 <- c(FALSE, TRUE, FALSE)
vetor_3 <- c("texto1", "comentario2", "anotação3")Dataframes são criados como uma ordenação de vetores em suas colunas:
tabela <- data.frame(vetor_1, vetor_2, vetor_3)
print(tabela)## vetor_1 vetor_2 vetor_3
## 1 2 FALSE texto1
## 2 3 TRUE comentario2
## 3 6 FALSE anotação3
Todas as funções do R provêm de pacotes, os pacotes nativos são inicializados abrindo o RStudio, contudo, para utilizar outras funções se faz necessário carregar o pacote com a função library. Ao rodar o código abaixo o seguinte erro aparecerá.
arrange(cars)## Error in arrange(cars): não foi possível encontrar a função "arrange"
Esse é o típico caso do pacote de funções não estar carregado ou não ter sido instalado. Para carregar o pacote use:
library(dplyr)
arrange(cars)## speed dist
## 1 4 2
## 2 4 10
## 3 7 4
## 4 7 22
## 5 8 16
## 6 9 10
## 7 10 18
## 8 10 26
## 9 10 34
## 10 11 17
## 11 11 28
## 12 12 14
## 13 12 20
## 14 12 24
## 15 12 28
## 16 13 26
## 17 13 34
## 18 13 34
## 19 13 46
## 20 14 26
## 21 14 36
## 22 14 60
## 23 14 80
## 24 15 20
## 25 15 26
## 26 15 54
## 27 16 32
## 28 16 40
## 29 17 32
## 30 17 40
## 31 17 50
## 32 18 42
## 33 18 56
## 34 18 76
## 35 18 84
## 36 19 36
## 37 19 46
## 38 19 68
## 39 20 32
## 40 20 48
## 41 20 52
## 42 20 56
## 43 20 64
## 44 22 66
## 45 23 54
## 46 24 70
## 47 24 92
## 48 24 93
## 49 24 120
## 50 25 85
Caso o pacote não esteja instalado, faça de forma genérica:
install.packages("nome_do_pacote") # Entre aspas escreva o nome do pacote
library(nome_do_pacote)Para a manipulação de dados usaremos o pacote dplyr e um banco de dados nativo do R chamado mtcars.
library(dplyr)
head(mtcars, 5) # Retorna as 5 primeiras linhas da tabela "mtcars"## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
A ideia do pacote dplyr está em tornar a manipulação de dados explicita utilizando verbos que indicam a ação a ser realizada. O encadeamento dos verbos com o banco de dados é realizado com o operador %>% (pipe). Digamos que quereremos filtrar os da tabela mtcars cujo valor da variável carb seja superior a 2, fazemos isso com a função filter.
mtcars %>% filter(carb > 2)## mpg cyl disp hp drat wt qsec vs am gear carb
## 1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## 2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## 3 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
## 4 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
## 5 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
## 6 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
## 7 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
## 8 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
## 9 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
## 10 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
## 11 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
## 12 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
## 13 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
## 14 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
## 15 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
Para obtermos, por exemplo, a média e o desvio-padrão da variável hp das observações agrupados pelo seu valor da variável gear.
mtcars %>% group_by(gear) %>% summarise(media = mean(hp), desvio = sd(hp))## # A tibble: 3 × 3
## gear media desvio
## <dbl> <dbl> <dbl>
## 1 3 176.1333 47.68927
## 2 4 89.5000 25.89314
## 3 5 195.6000 102.83385
Na estrutura abaixo estamos gerando uma tabela apenas com as variaveis carb, wt e price (select), onde price é uma variável criada pela fórmula \(price = gear*3000 + hp*10\), com as observações que tenham o valor da variável Carb maior que 1 e wt menor que 3.
mtcars %>% filter(carb > 1, wt < 3) %>% mutate(price = gear*3000 +hp*10) %>% select(carb, wt, price)## carb wt price
## 1 4 2.620 13100
## 2 4 2.875 13100
## 3 2 1.615 12520
## 4 2 2.140 15910
## 5 2 1.513 16130
## 6 6 2.770 16750
## 7 2 2.780 13090
Para conhecer mais usos do pacote dplyr acesse a documentação do desenvolvedor Aqui
A geração de gráficos mais simples em R utiliza a função plot, um gráfico simples pode ser gerado com dois vetores:
x = c(1,2,3,4,5,6)
y = c(2,4,6,8,10,12)
plot(x, y)Os gráficos gerados por esta função são de trabalhosa modificação para que possam ter a qualidade desejado pela quantidade de argumentos necessários. Confirma Aqui alguns exemplos de gráficos em melhor qualidade.
Por isto usaremos o pacote ggplot2 unido do dplyr para a criação de nossos gráficos.
library(ggplot2)
mtcars %>% ggplot(aes(x = hp, y = mpg))Até aqui nos mapeamos as variáveis que irão formar nosso plot. Dentro da função aes informamos (o termo técnico é “mapeamos”) as variáveis que irão compor os eixos, e com o pipe seguido do banco de dados, estamos declarando que as variáveis informadas vem do banco de dados mtcars. Para gerar o gráfico completo, informamos a geometria que ele deve ter.
library(ggplot2)
mtcars %>% ggplot(aes(x = hp, y = mpg)) + geom_point()Um pouco mais complexo a primeira vista, mas além de garantir uma melhor formatação, também permite modificações de forma mais simples do que com a função plot.
mtcars %>% ggplot(aes(x = hp, y = mpg, size = carb)) + geom_point(col = "darkgreen") Agora é sua vez!
Utilizando o banco de dados nativo PlantGrowth, realize as seguintes análises:
Cálcule a média e desvio-padrão do weight para cada um dos groups.
Construa o gráfico de barras com a tabela gerada no item anterior (dica: utilize a função geom_bar(stat = ‘identity’))
Construa uma nova variável para as observações do grupo trt2 com valor do peso menor que 6, cujo valor é igual a raiz da variável weight.