|
| 1 | += Guia Rápido de Introdução ao R |
| 2 | +:toc: macro |
| 3 | +:toc-title: |
| 4 | + |
| 5 | +toc::[] |
| 6 | + |
| 7 | +Amanda Luna - amanda.costa@ccc.ufcg.edu.br / Lívia Cavalcanti - livia.juliao@ccc.ufcg.edu.br |
| 8 | + |
| 9 | +== O que é R? |
| 10 | +É um software livre para gráficos e computação estatística. Usa command-line scripting, podendo armazenar uma série de passos de análise de dados complexos, e que possibilita reuso do seu trabalho de análise. |
| 11 | + |
| 12 | +== Instalando R e RStudio |
| 13 | +Para instalar o R e o RStudio, basta seguir http://leg.ufpr.br/~fernandomayer/aulas/ce083-2016-2/R-instalacao.html[este] este guia da UFPR |
| 14 | + |
| 15 | +== Tipos de dados |
| 16 | +R é uma linguagem fracamente tipada e nela existem 5 tipos de dados: integer, numeric,character,logical e factor. |
| 17 | + |
| 18 | +* *Integer* é o tipo de dado em que se armazena números inteiros; |
| 19 | + |
| 20 | +* *Numeric* é onde se armazena valores numéricos de precisão (o famoso float); |
| 21 | + |
| 22 | +* *Character* é onde se armazena strings e caracteres; |
| 23 | + |
| 24 | +* *Logical* são para representação de valores booleanos; |
| 25 | + |
| 26 | +* *Factor* são usados para representar categorias. |
| 27 | + |
| 28 | +Para guardar valores em uma variável no R, utilizamos *< -*, com a seta apontando para o nome da variável. |
| 29 | +---- |
| 30 | +var1 <- "Guardians" |
| 31 | +var2 <- 3 |
| 32 | +---- |
| 33 | + |
| 34 | +Para verificar a classe de uma determinada variável, é usada a função _class()_ e para realizar comentários no código é utilizada a cerquilha. |
| 35 | +---- |
| 36 | +class(3) # Retornará numeric |
| 37 | +class("abc") # Retornará character |
| 38 | +---- |
| 39 | + |
| 40 | +Importante: variáveis com números inteiros não são iniciados com o tipo integer, e sim com o tipo numeric ! Para que a variável seja inicializada já com o tipo integer, deve-se fazer: |
| 41 | + |
| 42 | +---- |
| 43 | +inteiro <- 3L # Este L serve para mostrar para o R que este é um número do tipo inteiro |
| 44 | +---- |
| 45 | + |
| 46 | +E para conversão de dados, utilizam-se as funções _as.tipododado()_. |
| 47 | +---- |
| 48 | +as.integer(3.0) |
| 49 | +as.character(4) |
| 50 | +as.integer("oi") # Não pode ser feito, retornará um erro. |
| 51 | +---- |
| 52 | + |
| 53 | +Curiosidade: ao tentar realizar a operação as.logical(3) a função retornará true, assim como com outros números, porém se for feita a operação as.logical(0), a função retornará false. |
| 54 | + |
| 55 | +== Operações Básicas |
| 56 | +Estas são algumas das operações básicas que se tem no R: |
| 57 | + |
| 58 | +* Soma: *+* |
| 59 | + |
| 60 | +* Subtração: *-* |
| 61 | + |
| 62 | +* Divisão: */* |
| 63 | + |
| 64 | +* Potenciação: *^* |
| 65 | + |
| 66 | +* Multiplicação: * |
| 67 | + |
| 68 | +* Raiz Quadrada: _sqrt()_ |
| 69 | + |
| 70 | +* Desvio Padrão: _sd()_ |
| 71 | + |
| 72 | +* Passar um data frame para uma função: *%>%* |
| 73 | + |
| 74 | +== Estruturas de Dados |
| 75 | + |
| 76 | +* Vetores: vetores são uma sequência simples de elementos do mesmo tipo. Quando definimos uma variável, é criado um vetor de um elemento. |
| 77 | +---- |
| 78 | +var1 <- 3 |
| 79 | +is.vector(var1) # Retornará true |
| 80 | +---- |
| 81 | + |
| 82 | +Para criarmos vetores com mais de um elemento, colocaremos os valores desejados dentro de um _c()_ |
| 83 | + |
| 84 | +---- |
| 85 | +var1 <- c(1,2,3,4) |
| 86 | +---- |
| 87 | + |
| 88 | +Obs. Caso você tente misturar os tipos, o R forçará que todos os elementos sejam do mesmo tipo |
| 89 | +---- |
| 90 | +var <- c(1,2,3,4,"batata") |
| 91 | +# Se você for visualizar a variável, o R terá convertido tudo para character |
| 92 | +#[1] "1" "2” "3” "4" "batata" |
| 93 | +---- |
| 94 | + |
| 95 | +* Matrizes: correspondem às matrizes matemáticas, com linhas e colunas. Semelhante aos vetores, só podem ser de um tipo de dado. |
| 96 | + |
| 97 | +---- |
| 98 | +mat <- matrix(c(1,2,3,4,5,6),nrow=3,ncol=2,byrow=TRUE) |
| 99 | +---- |
| 100 | + |
| 101 | +Com esta linha de código acima, é possível criar uma matriz de 3 linhas e duas colunas, organizadas por linha e contendo números de 1 a 6. |
| 102 | + |
| 103 | +---- |
| 104 | +var1 <- c(1,2,3) |
| 105 | +var2 <- c(4,5,6) |
| 106 | +mat <- rbind(var1,var2) |
| 107 | +---- |
| 108 | + |
| 109 | +Com esta outra linha também é possível criar uma matriz, só que diferente da implementação anterior, estamos combinando dois vetores por linhas. |
| 110 | +Obs. Não é possível combinar vetores de tamanhos diferentes e na primeira implementação, não é possível definir um números de linhas e colunas que não sejam múltiplos do tamanho do vetor passado no parâmetro. |
| 111 | +Para acessar elementos em uma matriz, deve-se utilizar colchetes,informando primeiro a linha e depois a coluna. |
| 112 | + |
| 113 | +---- |
| 114 | +m[1,2] |
| 115 | +---- |
| 116 | + |
| 117 | +* Listas: são um tipo especial de vetores, no qual pode-se colocar elementos de tipos diferentes, incluindo os próprios vetores. |
| 118 | + |
| 119 | +---- |
| 120 | +lista <- list(c(1,2,3,4),c(T,F),c("Guardians",">","Pet")) |
| 121 | +---- |
| 122 | + |
| 123 | +Pode-se acessar um pedaço da lista indicando o índice dele |
| 124 | +---- |
| 125 | +lista[1] # Irá retornar o pedaço da lista contendo o primeiro vetor |
| 126 | +---- |
| 127 | + |
| 128 | +Para acessar o elemento em si, deve-se acessar utilizando colchetes duplos |
| 129 | +---- |
| 130 | +lista[[1]] # Retorna o primeiro elemento da lista em si |
| 131 | +---- |
| 132 | + |
| 133 | +Para acessar um elemento dentro de um vetor contido na lista, deve-se usar colchetes duplos (para sinalizar qual o vetor desejado) seguido do índice do elemento procurado,também entre colchetes. |
| 134 | +---- |
| 135 | +lista[[1]][2] # Retorna o segundo elemento do primeiro vetor da lista |
| 136 | +---- |
| 137 | + |
| 138 | +Por último, nas listas é possível referenciar os elementos por nomes ao invés dos índices. |
| 139 | +---- |
| 140 | +lista <- list(coiso1 = c(1,2,3), coiso2 = c(T,F,T)) |
| 141 | +lista["coiso1"] # Retorna pedaço da lista que contém o vetor coiso1 |
| 142 | +---- |
| 143 | + |
| 144 | +Ou ainda referenciar utilizando o *$* |
| 145 | +---- |
| 146 | +lista$coiso2 # Retornará o elemento referente ao vetor coiso2 |
| 147 | +---- |
| 148 | + |
| 149 | +Porém, mesmo nomeando os itens, ainda é possível acessá-los pelos índices normalmente. |
| 150 | + |
| 151 | +* Data Frames: é a estrutura do R utilizada para armazenar dados em forma de tabela, organizados por linha e colunas. _(Agora que vai ficar legal)_ |
| 152 | + |
| 153 | +Para criar um data frame, é necessário utilizar a função _data.frame_. |
| 154 | +---- |
| 155 | +df <- data.frame(c(1,2,3),c(T,F,T)) |
| 156 | +---- |
| 157 | + |
| 158 | +Percebeu que os nomes das colunas ficaram estranhos? Para dar nomes às colunas do data frame pode-se usar a função _names()_. |
| 159 | +---- |
| 160 | +names(df) <- c("numeric","logical") |
| 161 | +---- |
| 162 | + |
| 163 | +O R possui nativo vários data frames, que possuem como maior finalidade aprendizado e realização de testes, entre eles o há o *mtcars*. |
| 164 | +---- |
| 165 | +data(mtcars) # Carrega o data frame |
| 166 | +mtcars # Printa o df |
| 167 | +names(mtcars) # Printa os nomes das colunas |
| 168 | +str(mtcars) # Nos retorna a estrutura do df |
| 169 | +head(mtcars) # Retorna os primeiros elementos |
| 170 | +tail(mtcars) # Retorna os últimos elementos |
| 171 | +mtcars$mpg # Retorna apenas os valores da coluna mpg |
| 172 | +mean(mtcars$mpg) # Retorna a média dos valores desta coluna |
| 173 | +summary(mtcars) # Retorna a média,mediana,máximos,mínimos e quartis |
| 174 | +---- |
| 175 | + |
| 176 | +Para selecionar dados no data frame também é utilizado colchetes, informando a linha e a coluna referente ao que é procurado. Pode-se selecionar também utilizando os nomes. |
| 177 | +---- |
| 178 | +mtcars[1,2] |
| 179 | +mtcars["Lotus Europa","gear"] |
| 180 | +mtcars["Mazda RX4",2] |
| 181 | +---- |
| 182 | + |
| 183 | +== Instalação de Pacotes |
| 184 | +O R, por ser open source, possui milhares de pacotes com diferentes funções. Para instalar um pacote, basta utilizar o comando _install.packages("nome do pacote")_. |
| 185 | +---- |
| 186 | +install.packages("swirl") |
| 187 | +---- |
| 188 | + |
| 189 | +Para carregar um pacote, deve-se utilizar o comando _library(pacote)_ |
| 190 | +---- |
| 191 | +library(swirl) |
| 192 | +---- |
| 193 | + |
| 194 | +Importante: como R é uma linguagem de linha de comando, sempre que você for precisar de um pacote para sua implementação, deve utilizar o _library()_ com o pacote que você deseja, do contrário, não poderá acessar as funções da biblioteca. O mesmo acontece com tudo que já foi implementado no R script. |
| 195 | +Uma boa prática de programação é declarar todos os pacotes utilizados em cada arquivo .R logo nas primeiras linhas do código. |
| 196 | + |
| 197 | +Sugestão: execute os comandos acima, depois digite _swirl()_ no console e veja a magia acontecer. |
| 198 | + |
| 199 | +== Bibliotecas Importantes |
| 200 | + |
| 201 | +Em análise de dados, as bibliotecas _dplyr_ e _ggplot2_ são indispensáveis. Para instalá-las, execute os seguintes comandos: |
| 202 | +---- |
| 203 | +install.packages(dplyr) |
| 204 | +install.packages(ggplot2) |
| 205 | +---- |
| 206 | + |
| 207 | +O _dplyr_ é uma biblioteca de manipulação de dados, com ela você pode realizar várias operações de manipulação, tais como: filtrar dados, sumarizar, selecionar,agrupar, entre outras coisas, já o _ggplot2_ é para visualização de dados, com ele pode-se montar vários tipos de gráficos com facilidade. |
| 208 | +O _dplyr_ possui alguns comandos básicos, tais como: |
| 209 | +---- |
| 210 | +select() |
| 211 | +filter() |
| 212 | +mutate() |
| 213 | +group_by() |
| 214 | +summarise() |
| 215 | +---- |
| 216 | + |
| 217 | +*I) Operador %>%* |
| 218 | + |
| 219 | +Este operador encadeia as funções de modo que o programador não precise ficar chamando uma função dentro da outra como em outras linguagens, tal como _dados.getCarros()_. |
| 220 | +Neste caso, o operador cria um fluxo sequencial de operações, tal que a chamada anterior irá gerar um resultado que será utilizado na operação seguinte. |
| 221 | +---- |
| 222 | +mtcars %>% select(c("mpg","cyl")) %>% filter(cyl > 4) |
| 223 | +---- |
| 224 | + |
| 225 | +Nesta linha, temos que o data frame *mtcars* será manipulado, e que nele serão feitas duas operações, uma seleção e uma filtragem. Na função *select* iremos selecionar apenas as colunas *mpg* e *cyl* e na função _filter_, filtramos os dados que possuam *cyl > 4*. |
| 226 | + |
| 227 | +*II) Select* |
| 228 | + |
| 229 | +A função _select_ é utilizada para selecionar colunas em um data frame, por exemplo, se no data frame *mtcars*, quisermos apenas as colunas *gear* e *carb*, faremos: |
| 230 | +---- |
| 231 | +mtcars %>% select(c("gear","carb")) |
| 232 | +---- |
| 233 | + |
| 234 | +Caso o objetivo seja excluir uma coluna do data frame, por exemplo a coluna *gear*, basta fazer |
| 235 | +---- |
| 236 | +mtcars %>% select(-gear) |
| 237 | +---- |
| 238 | + |
| 239 | +*III) Filter* |
| 240 | + |
| 241 | +A função _filter_ é utilizada para filtrar as linhas que o programador deseja, por exemplo, caso o programador queira apenas os carros cujo *cyl* é maior do que 4, faríamos: |
| 242 | +---- |
| 243 | +mtcars %>% filter(cyl > 4) |
| 244 | +---- |
| 245 | + |
| 246 | +*IV) Mutate* |
| 247 | + |
| 248 | +O _mutate_ é uma função usada para criar novas colunas no data frame que você está manipulando, caso quiséssemos adicionar uma nova coluna que seja o resultado da divisão entre *mpg* e *cyl*, faríamos: |
| 249 | +---- |
| 250 | +mtcars <- mtcars %>% mutate(coluna = mpg/cyl) |
| 251 | +---- |
| 252 | + |
| 253 | +*V) Group by e Summarise* |
| 254 | + |
| 255 | +O _group_by_ separa seus dados nos grupos que você selecionar, o _summarise_ faz operações de agregação de linhas limitadas a esse grupo, por exemplo, se quiséssemos agrupar os dados por *mpg* e agregar a soma destes mesmos *mpg*, faríamos: |
| 256 | +---- |
| 257 | +mtcars <- mtcars %>% group_by(mpg) %>% summarise(somas = sum(mpg)) |
| 258 | +---- |
| 259 | + |
| 260 | +Para aprender a utilizar o _ggplot2_ , eu recomendo utilizar o cheat sheet do RStudio, ele possui exemplos dos mais diversos gráficos. |
| 261 | + |
| 262 | +O cheat sheet pode ser encontrado https://www.rstudio.com/resources/cheatsheets/[aqui], porém o site do RStudio possui vários outros que facilitam o aprendizado,incluindo _dplyr_. |
| 263 | + |
| 264 | +Também tem alguns exemplos simples no https://github.com/avdLuna/R-Examples[github]. |
0 commit comments