R - Aula 1, introdução e tipos de dados

O R

O que é?

O R é uma linguagem de programação com código aberto designada principalmente para análises estatísticas simples e complexas. Foi criada por um grupo na Nova Zelândia (Ross Ihaka, Robert Gentleman, et al. em 1993) em substituição à uma linguagem de programação chamada S, que possuia código fechado e era pago.

Por que o R?

O R possui uma interface intuitiva e muito fácil de se usar mesmo para quem não entende de programação.

No R há formas únicas para a análise dos dados, interpretação gráfica e algumas análises específicas da linguagem (Figura 1). Há outras linguagens e softwares que também fazem análises de dados como o Python, SQL, C, SPSS e Primer, porém apenas a comunidade do R vem crescendo de forma exponencial desde 2010 (Figura 2) em uma proporção que praticamente todos os testes estatísticos de todas as áreas podem ser realizados no R.

O R é utilizado para:

  • Programação: É uma linguagem clara e objetiva

  • Transformação: O R é designado principalmente para o Data science

  • Exploração: Possui ferramentas e bibliotecas poderosas para explorar os dados

  • Modelagem: Provém de diversos modelos estatísticos para se ajustar a diferentes tipos de dados

  • Gráficos: Integra por meio da linguagem gráficos exclusivos, meios de comunicação (como esse agora) com o Rmarkdown e análises que apenas o R compreende

Figura 1: Análises com R

Figura 2: Crescimento da linguagem R no meio científico

Abrindo o R

O R possui sua interface nativa (figura 3) e o software RStudio, uma plataforma mais moderna e amigável (Figura 4). O RStudio é o mais utilizado, porém ambos têm a mesma funcionalidade, o RStudio não funciona sem o R instalado no computador.

Figura 3: interface nativa do R

A interface nativa possui de uma forma geral, dois espaços, um para códigos e outro para plots, outros scripts, etc que abrem em janelas a parte.

Figura 4: RStudio desktop

O RStudio possui 4 painéis bem divididos, ajustaveis, onde o Painel 1 é o script (código) utilizado no R, o Painel 2 é o console (saída) do R, que é onde se lê os resultados de alguns testes, o painel 3 é onde ficam as variáveis declaradas no painel 1 a partir dos códigos e o painel 4 é onde aparecem os plots (gráficos) que são obtidos com os códigos e também onde há a aba “Help”, que se torna muito útil em muitos casos.

Operadores básicos no R

Os operadores básicos (soma, subtração, divisão, resto, multiplicação, potenciação, radiciação, logarítmo e operações lógicas) são comuns a maioria das linguagens de programação… No R pode-se fazer o uso dessas operações a partir de alguns códigos simples.

Soma

Apenas digitar por exemplo 6.5+6.5 e o resultado será obtido

6.5 + 6.5
[1] 13

Subtração

Mesma lógica da soma, porém com o sinal de subtração -.

10 - 4
[1] 6

Divisão

Para a divisão se utiliza do operador / entre dois números.

10/5
[1] 2

Resto

Pode-se obter também o módulo/resto da divisão a partir do operador %% entre dois números

10%%3
[1] 1

Multiplicação

Utiliza-se do operador *.

30 * 10
[1] 300

Potenciação

Apenas colocar o acento circunflexo entre dois números ^.

2^3
[1] 8

Radiciação

Para a radiciação não utiliza de operadores, apenas do código sqrt() “Square root”

sqrt(49)
[1] 7

Logarítmo

O logarítmo segue a mesma lógica do sqrt(), porém com a função log()

log(13)
[1] 2.564949

Operadores lógicos

Estes são utilizados no R como <,>,==, !=, <=,>= (respectivamente menor que, maior que, igual, diferente, menor ou igual e maior ou igual) para em função da lógica, testar se algo é verdadeiro TRUE ou falso FALSE, por exemplo… quero checar se o número 50 é menor, igual ou maior que o número 55.

# 50 é menor que 55?
50 < 55
[1] TRUE

O R retorna se o que quer ser sabido é verdadeiro ou não.

# 50 é maior que 55?
50 > 55
[1] FALSE
# 50 é igual a 55?
50 == 55
[1] FALSE
# 50 é diferente de 55?
50 != 55
[1] TRUE
# 50 é menor ou igual a 55?
50 <= 55
[1] TRUE
# 50 é maior ou igual a 55?
50 >= 55
[1] FALSE

Ele sempre retornará TRUE ou FALSE de acordo com a premissa ser verdadeira ou falsa, respectivamente.

Tipos de dados no R

O R armazena os dados de maneiras diferentes de acordo com a natureza, tamanho e distribuição dos dados. Estas formas estão descritas abaixo.

Valor único

No R, pode-se utilizar tanto de valores únicos como 1, 2, 3, 1.23, "a", "b", "frase ou texto, etc", TRUE, FALSE ou NULL que são os valores numéricos (inteiros e decimais), character (letras, frases, ou textos), lógicos (ou booleanos), esses tipos de valores são chamados de CLASSES. É importante ressaltar que o valor "frase, texto, etc" é considerado apenas um valor da classe character e que esses valores devem sempre estar entre aspas "x".

Para declarar ou criar um valor, utiliza-se do nome da variável <- uma seta que alocará o que for escrito após ela no nome da variável. Por exemplo:

numero <- 13

Dessa forma, sempre que for preciso utilizar do valor 13, pode-se utilizar do nome da variável numero. Este tipo de variável não é muito utilizada, visto que é mais simples apenas digitar o número.

Vetores

A sequência desses valores, sendo esse mais de um valor é chamado de vetor. Este pode apenas possuir um tipo de classe para ser classificado como vetor. Vetores com mais de um tipo de classe, sempre adquiri uma das classes para se tornar um vetor, vejamos.

Por exemplo:

Um vetor de somente uma classe: 1, 2, 3, 4.2, 5, 6.8, 7, 8 (classe numérica)

Um vetor com duas classes: 1, 2, 3, TRUE, FALSE (classes numérica e lógica)

Um vetor com duas classes: "Parabéns por estar aprendendo R", "a", "b", "c", FALSE, TRUE, TRUE (classes character e lógica)

Um vetor com três classes: "Parabéns por estar aprendendo R", "a", "b", "c", FALSE, TRUE, TRUE, 6.8, 6, 8, 1, 2, 3 (classes character, lógica e numérica)

No segundo exemplo, o R interpretará o TRUE e o FALSE como 1 e 0, transformando o vetor em apenas numérico.
No terceiro exemplo, o R interpretará TRUE e FALSE como character, levando a apenas um vetor de classe character.
No quarto exemplo, todos serão convertidos para a classe character. Sempre que houver um character que não seja o nome do vetor, este converterá todos os outros valores a character.

Para declarar um vetor, utiliza-se do nome da variável <- uma seta que alocará o que for escrito após ela no nome da variável. Por exemplo:

vetor1 <- c(1, 2, 3.5, 4.2, 5.43631, 6, 13.1)

Desta forma, a variável será alocada no R e poderá ser usada quando preciso apenas digitando seu nome vetor1 o c() após a seta significa concatenado e indica que será adicionado mais de um valor à variável. É perceptível que há apenas uma classe no exemplo acima.

Há algumas regras básicas para o nome de uma variável no R, a primeira delas é que o nome da variável deve sempre iniciar com uma letra, nunca com um número, a segunda é que não se deve utilizar o nome de alguma função do R no nome da variável, por exemplo sqrt é a função do R para a raiz quadrada, logo não se deve nomear uma variável como sqrt no R.

Matrizes

As matrizes são um conjunto de vetores de mesma classe, cada um sendo uma coluna formando um tipo de tabela. Há umas regras para a definição de matrizes no R, estas são:

  • Os vetores têm que possuir mesmo comprimento/tamanho (ou número de valores)

  • Os vetores têm que ter a mesma classe

Uma matriz pode ser definida pela função matrix no R. Por exemplo:

# Definindo vetores de mesmo tamanho
V1 = c(1, 2, 3, 4, 5, 6, 13)
V2 = c(1, 6, 7, 8, 4, 5, 7)
V3 = c(3, 7, 9, 57, 3, 2, 3)
V4 = c(1, 5, 7, 8, 6, 4, 1)
V5 = c(6, 5, 4, 2, 9, 7, 9)
# Juntando os vetores com a função matrix
matriz1 <- matrix(c(V1, V2, V3, V4, V5), nrow = 7, ncol = 6)
Que gera a seguinte matriz:
1 1 3 1 6
2 6 7 5 5
3 7 9 7 4
4 8 57 8 2
5 4 3 6 9
6 5 2 4 7
13 7 3 1 9

As funções nrow e ncol significam respectivamente o número de linhas e de colunas que a matriz possuirá.

Data frames

Data frame são um conjunto de dois ou mais vetores onde estes podem possuir diferentes classes, porém possuir o mesmo número de valores (tamanho), formando uma tabela, data frame é o equivalente as tabelas criadas no excel. Esse é o principal tipo de dado utilizado na linguagem R pela liberdade que ele proporciona para quem o está manuseando. Este tipo de dado pode por exemplo, possuir vetores (colunas) que indiquem o nome de locais de coleta e outro vetor que indique a abundância de cada espécie para cada coleta. Em um data frame, as colunas (vetores) possuem nome, nesse caso, pode ser o nome da espécie encontrada.

Um data frame é obtido através da função data.frame ou tibble no R.

set.seed(999)
dados.praia <- data.frame(local = c(rep("TAMA", 5), rep("SJCG", 5), rep("CUPE", 5), 
    rep("PTGL", 5)), spp1 = sample(0:30, replace = TRUE, size = 20), spp2 = sample(0:20, 
    replace = TRUE, size = 20), spp3 = sample(0:5, replace = TRUE, size = 20), spp4 = sample(0:100, 
    replace = TRUE, size = 20), spp5 = sample(0:13, replace = TRUE, size = 20), spp6 = sample(0:50, 
    replace = TRUE, size = 20))
Que gera a tabela:
local spp1 spp2 spp3 spp4 spp5 spp6
TAMA 26 17 1 38 13 45
TAMA 3 0 4 72 1 15
TAMA 28 4 0 3 5 28
TAMA 6 18 1 94 11 24
TAMA 8 11 4 40 5 11
SJCG 13 8 5 19 2 41
SJCG 0 20 0 22 0 10
SJCG 25 4 1 64 4 29
SJCG 9 3 4 100 9 45
SJCG 21 14 5 97 12 10
CUPE 2 15 3 26 4 42
CUPE 22 10 4 39 12 9
CUPE 23 1 3 56 2 42
CUPE 14 8 1 97 3 48
CUPE 4 0 2 69 7 43
PTGL 6 17 0 78 13 40
PTGL 5 7 3 32 11 0
PTGL 29 3 4 28 7 27
PTGL 18 3 2 55 10 42
PTGL 10 8 3 35 8 49

set.seed(999) significa que as amostras não serão mais aleatoriezadas, pois a função sample aleatoriza os dados e os distribui de forma randômica, é uma forma de fixar a função sample. rep() significa que o valor “TAMA”, por exemplo, se repetirá 5 vezes e assim por diante.

Com esse código e tabela, tem-se um desenho amostral com resultados hipotéticos de 5 coletas nas praias Tamandaré (TAMA), São José da Coroa Grande (SJCG), Cupe (CUPE) e Porto de Galinhas (PTGL) com 6 espécies hipotéticas com suas abundâncias relativas para as 20 coletas nas 4 praias.

Esta é a estrutura do data frame, vetores de diferentes classes formando uma tabela para uma melhor visualização dos dados.

Listas

Listas são uma forma de estocar variáveis, dados, vetores, valores, matrizes e tabelas de uma forma mais simples, independentemente do tamanho, da classe, do tipo de dado, estes podem ser atribuídos às listas, até outras listas podem ser adcionadas à listas. Esta não é a forma mais convencional de se utilizar os dados no R pela complexidade que se há por trás desse tipo de armazenamento de dados.

No R, a função para obter uma lista é o list.

# Armazenando os exemplos anteriores de valor, vetor, matriz e data frame em uma
# lista
lista1 <- list(numero, vetor1, matriz1, dados.praia)

O que gera a seguinte lista:

[[1]]
[1] 13

[[2]]
[1]  1.00000  2.00000  3.50000  4.20000  5.43631  6.00000 13.10000

[[3]]
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    1    3    1    6    1
[2,]    2    6    7    5    5    2
[3,]    3    7    9    7    4    3
[4,]    4    8   57    8    2    4
[5,]    5    4    3    6    9    5
[6,]    6    5    2    4    7    6
[7,]   13    7    3    1    9   13

[[4]]
   local spp1 spp2 spp3 spp4 spp5 spp6
1   TAMA   26   17    1   38   13   45
2   TAMA    3    0    4   72    1   15
3   TAMA   28    4    0    3    5   28
4   TAMA    6   18    1   94   11   24
5   TAMA    8   11    4   40    5   11
6   SJCG   13    8    5   19    2   41
7   SJCG    0   20    0   22    0   10
8   SJCG   25    4    1   64    4   29
9   SJCG    9    3    4  100    9   45
10  SJCG   21   14    5   97   12   10
11  CUPE    2   15    3   26    4   42
12  CUPE   22   10    4   39   12    9
13  CUPE   23    1    3   56    2   42
14  CUPE   14    8    1   97    3   48
15  CUPE    4    0    2   69    7   43
16  PTGL    6   17    0   78   13   40
17  PTGL    5    7    3   32   11    0
18  PTGL   29    3    4   28    7   27
19  PTGL   18    3    2   55   10   42
20  PTGL   10    8    3   35    8   49

[[1]], [[2]], [[3]], [[4]] significam cada posição que os dados assumiram na lista, isso é determinado de acordo com a sequência do list().

Em resumo…

O R é uma linguagem de programação voltada para a estatística que vem se expandindo muito desde a última década.

Os principais tipos de valores que o R possui são

  • Character: letras, frases ou textos, sendo sempre entre aspas “x”

  • Numérico (inteiro e decimal): Números, podem ser discretos (inteiros) e.g. 1, 2, 4 ou contínuos (decimal) 1.1, 1.2, 2.5, 6.9…

  • Lógico (ou booleano): Se refere a valores utilizados em lógica, como TRUE (verdadeiro), FALSE (falso), NULL (ausente).

Os principais tipos de dados são:

  • Valores: itens únicos

  • Vetores: dois ou mais itens

  • Matrizes: dois ou mais vetores de mesma classe e tamanho

  • Data frames: dois ou mais vetores de diferentes ou iguais classes e iguais tamanhos

  • Listas: Conjunto de todo tipo de dado reunido em uma só variável.

Exercício

Instruções

Para esse exercício será preciso utilizar-se do word office (ou similares) e de scripts no RStudio…
Para a entrega do exercício envie dois arquivos: o documento word em PDF ou docx e o script do R.
Qualquer dúvida, é só postar no mural, Bom exercício!

Questões

1. Qual a diferença entre o R nativo e o RStudio?

2. Por que o R vem se tornando uma das principais linguagens de programação estatística? Quais as características que o fazem ser tão utilizado?

3. Explique as diferenças entre os tipos de classe (numérico, string, lógico).

4. Explique as diferenças entre os tipos de dados que o R compreende (Valor único, vetor, matriz, data frame e lista).

5. Disserte sobre se pode-se declarar um vetor, matriz ou data frame com dois tipos de classes de valores em apenas uma coluna.

6. Quais são os operadores aritméticos e lógicos (ou booleanos) do R? Mostre como eles podem ser utilizados no R.

7. Sabendo-se dos operadores aritméticos, calcule duas diferentes médias para os números 13, 22, 56, 45, 14, 13, 12, 36 e 50, 42, 80, 92, 98, 63, 54, 73 a declare uma variável para cada um dos resultados das médias.

Fórmula da média:

\[média = \frac{\sum^n_{i=1}x_i}{n}\]

Exemplo de declaração de variável de um resultado:

# É apenas dizer que a variável é a operação
soma = 1 + 2
soma
[1] 3

8. A partir do que se sabe sobre os operadores lógicos no R, compare as variáveis com os valores das duas médias (se são maiores ou menores, diferentes ou iguais). utilize de todos os operadores lógicos.

Exemplo:

soma = 1 + 2
subtração = 2 - 1
soma < subtração
[1] FALSE