R: Introdução a Ciência de Dados
Preparando o Ambiente
sudo apt update
sudo apt install r-base r-base-dev
O uso da linguagem pode se dar tanto via terminal, ao utilizar o comando R
, quanto através da IDE RStudio, sendo este último a maneira recomendada.
Tipos de Dados Básicos e Variáveis
# Tipos de Dados
numerico <- 10.5 # Decimal (Padrão)
inteiro <- as.integer(6) # is.integer(inteiro) == True
logico <- False # ||, &&, !
string <- paste("a","b") # "a b"
string <- paste0("a","b") # "ab"
# Ambas as formas são válidas
numero1 <- 10
numero2 = 10
# Printando Valor da Variável
numero1
numero2 - 5
Datas
Sys.Date() # Date: Manipulação em Dias
Sys.time() # POSIXct: Manipulação em Segundos
# Converter String para Data
as.Date("YYYY-MM-DD") # Formato Padrão
as.Date("DD/MM/YYYY", "%d/%m/%y") # Convertendo o Formato
Operações Básicas
# +, - , *, /, %
(3 * 8) + 2 / 5
Criando e Manipulando Vetores
# Instanciando Vetor
vetor <- c(1, 2, 3, 4, 5, 6)
vetor * 2 # Manipulando Vetor como Único Elemento
# [2, 4, 6, 8, 10, 12]
# Acessando Elementos do Vetor
vetor[i] # Elemento Indicado pelo Índice (1..n)
vetor[-i] # Todos os Elementos, Exceto o Indicado
vetor[i:j] # Intervalo Fechado
vetor[-i:-j] # Intervalo Aberto
# Nomeando Elementos
names(vetor) <- c("nome1",...,"nomen")
# Repetir Elementos
rep(elemento,quantidade)
Fator
# Vetor de Categorias e Níveis sem Repetição
fator <- factor(vetor)
Tabela
# Elimina Repetições e Determina Frequências
fator <- table(vetor)
Matriz
matriz <- matrix(vetor, ncol=numeroColunas, nrow=numeroLinhas) # Definindo Matriz, Preenchendo em Coluna
matrizt <- t(matriz) # Matriz Transposta
matrizi <- solve(matriz) # Matriz Inversa
# Combinar Matrizes
matrizl <- rbind(matriz1, matriz2) # Linha
matrizc <- cbind(matriz1, matriz2) # Coluna
matriz1 %*% matriz2 # Multiplicação Matricial
Lista
lista <- list(valor1,...,valorn) # Definindo uma Sequência de Diferentes Tipos
# Acessando Elementos do Vetor
lista[i] # Retorna uma Lista com Elemento Indicado pelo Índice (1..n)
lista[[i]] # Retorna o Elemento Indicado pelo Índice (1..n)
# Definindo Lista com Elementos Nomeados
lista <- list(nome1=valor1,...,nomen=valorn)
Data Frames
# Tabela de Dados compostas por Listas de Valores de Igual Tamanho
# Indexação de Elementos
dataFrame[i,j] # Numeração
dataFrame["a","b"] # Nomes
dataFrame[i,] # Linha
dataFrame[,j] # Coluna
# Tamanho
ncol(dataFrame) # Total de Linhas
nrow(dataFrame) # Total de Colunas
head(dataFrame) # Início do Data Frame
Desenhando Gráficos
amostra <- c(2, 4, 4, 6, 6, 6, 6, 8, 8, 10) # Elemento x Frequência
# Gráfico de Barras: Dados Categóricos
barplot(amostra)
# Histograma: Dados Intervalares
hist(amostra)
# Gráfico Pizza
pie(amostra)
# Gráfico de Dispersão
plot(amostra)
# Definindo Legenda
legend("Posição da Legenda", fill=c(cor1,...,corn), legend=c("legenda1",...,"legendan"))
# Desenhando Linha no Histograma
abline(v=valor, col="cor", lwd=larguraDaLinha)
Média
mean(amostra)
Mediana
median(amostra)
Funcão Própria
funcao <- function(param1, param2, ...) {
# Código a ser Executado
}
Moda
mode <- function(amostra) {
amostraSemRep <- unique(amostra)
amostraSemRep[which.max(tabulate(match(amostra, amostraSemRep)))]
}
Distribuição Normal
shapiro.test(amostra) # Distribuição não é Normal: p-value < 0.05
# Distribuição é Normal: p-value >= 0.05
Sumário
summary(amostra) # Resumo das Informações de uma Conjunto de Dados
Boxplot
boxplot(amostra) # Gráfico que expõe o Primeiro e o Terceiro Quartis
Salvando como .png
png(file="/path/da/imagem.png", width=comprimento, height=altura) # Determinando o Path, o Comprimento e a Altura
# da Figura
dev.off() # Salvando Modificações na Imagem
Variância
var(amostra) # Se a Amostra for Pequena: (Xi - X)**2 / (n - 1)
# Se a Amostra for Grande: (Xi - X)**2 / n
Desvio Padrão
sd(amostra)
Manipulando Dados Tabulados
amostra <- read.table(file="/path/da/amostra.csv") # Criando Data Frame a partir de table
amostra <- read.csv(file="/path/da/amostra.csv") # Criando Data Frame a partir do .csv
amostra$coluna # Acessando coluna do Data Frame
Intervalos de Confiança
# Obtemos o Intervalo de Confiança através do Teste com a Distribuição t de Student
t.test(amostra) # 90% de Confiança
t.test(amostra, conf.level=0.9)
Manipulação do Sistema
# Diretório de Trabalho
getwd() # Obter
setwd("path") # Modificar
# Pacotes e Dados do Sistema
search() # Listar
attach(dados) # Adicionar
detach(dados) # Remover