exemplos_de_aula/02-tabelas.R

# Introdução ----------

# Nossos dados, no geral, não são digitados manualmente dentro de um script

# Às vezes sim! Entretanto, na esmagadora maioria das vezes não é assim

# Para carregar os dados para dentro do R, a gente usa funções que são estão
# disponíveis no R quando o instalamos. Todos os dias alguém cria um novo jeito
# de importar dados dos mais variados formatos! 


# Pacotes ----------

# A forma de disponibilizar novas funções para que outras pessoas possam 
# utilizar é através de pacotes. Um pacote no R é um conjunto de funções, 
# bases de dados, e documentação (textos que explicam o que as funções fazem,
# quais dados as bases tem disponível, tutoriais como usar as funções, etc). 

# o pacote que vamos instalar se chama "readr", do inglês read = ler + r

# para instalar um pacote você usa uma função que se chama "install.packages" 
# e aplica ela num texto, entre aspas. As aspas são importantes!


# install.packages("readr")

# para que todas as funções de leitura de dados fiquem disponíveis para você, 
# você usa a função "library". Neste caso, funciona com ou sem aspas!

library("readr")
library(readr)


# a função library deixa todas as funções que fazem parte do pacote readr
# disponíveis pra você utilizar. 
# se você fechar o RStudio por qualquer motivo, ou reiniciar a sessão do R,
# essas funções não estarão mais disponíveis e você vai precisar 
# usar a função library novamente.

# Apenas é necessário instalar o pacote uma vez no seu computador/usuário.
# Porém é necessário carregar as funções, utilizando a função library(), 
# todas as vezes que você iniciar o seu RStudio.

# Caminhos até arquivos --------------------------------------------------

# Uma habilidade importante quando estamos analisando dados é 
# conseguir escrever os caminhos corretos até os arquivos, como por exemplo as 
# nossas bases de dados.

# Por exemplo: caso a gente não consiga informar para o R o caminho
# da planilha que queremos ler, não conseguiremos abrir estes dados 
# no R para fazer as análises.

# O primeiro conceito importante neste momento é o de diretórios de trabalho.
# O diretório de trabalho, ou working directory, é a pasta no computador 
# onde o R está considerando como nosso "local de trabalho" atual.

# Quando trabalhamos com projetos no R (R projects), o diretório de trabalho
# é a pasta onde o arquivo .Rproj atual está salvo. Essa é uma grande vantagem
# de trabalhar com projetos!

# E quando não estamos em projetos? É possível ver (e mudar!) qual é o diretório
# de trabalho utilizado por padrão pelo RStudio no seu computador através
# do caminho:
# "Tools"(na barra de navegação superior) > "Global Options" > "General" >
# "Default working directory (when not in a project):" 

# Como saber qual o nosso diretório de trabalho atual?
getwd()

# Existem duas formas de informar para o R os caminhos até um arquivo ou pasta
# no computador: caminhos absolutos e relativos.

# Caminhos absolutos: são completos, partindo da "raíz" do computador.
"/home/william/Documents/Curso-R/main-r4ds-1/dados/imdb.csv"

# Caminhos relativos: são relativos ao  diretório de trabalho atual, partem dele.
"dados/imdb.csv"
# outro exemplo
"dados/voos_de_abril.csv"

# (cara(o) professora(o), favor lembrar de falar da dica 
# de navegação entre as aspas e a tecla tab) 


# Carregando os dados de uma planhila -------

# um formato muito comum de dados que a gente encontra por aí é a planilha. 
# Para ler uma planilha para dentro do R 
# que esteja salva com a extensão ".csv", 
# você pode utilizar a função read_csv2() :

library(readr)

base_de_dados <- read_csv2("dados/voos_de_janeiro.csv")

#?dados::voos
#?nycflights13::flights
# install.packages("nycflights13")

base_de_dados <- read_csv2("dados/voos_de_janeiro.csv")

base_de_dados_fev <- read_delim("dados/voos_de_fevereiro.csv", 
                                delim = ";", escape_double = FALSE, trim_ws = TRUE)
View(base_de_dados_fev)


importando_com_ponto <- read.csv2("dados/voos_de_abril.csv")

## Exercício! ------------
# Carregue a base de dados correspondente aos voos de marco, 
# e guarde em um objeto chamado 'base_de_dados_marco'


# read.csv2() # utils
# read_csv2() # readr

base_de_dados_marco <- read_csv2("dados/voos_de_marco.csv")

base_de_dados_abril <- read_csv2("dados/voos_de_abril.csv")


# Bases no R - o que é um data.frame? -------

#  O objeto mais importante para a pessoa que é cientista de dados 
# é a base de dados.
# No R, uma base de dados é representada por objetos chamados de data.frames.
# Eles são equivalentes a uma tabela do SQL ou uma planilha do Excel.

# A principal característica de um data.frame é possuir linhas e colunas! 

# Na aula, usamos várias palavras para falar sobre a base de dados:
# base de dados, dataset, tabela, data.frame

# Explorando o que tem na base --------------

base_de_dados # somente o nome da base: visualizar no console

View(base_de_dados) # a função View() abre uma nova aba onde 
# é possível ver a base. Cuidado com o View() com bases muito
# grandes, pois sua sessão do RStudio pode ficar lenta!


# Retorna o número de colunas 
ncol(base_de_dados)

# Retorna o número de linhas
nrow(base_de_dados)

# Retorna o número de colunas e linhas (as dimensões do data.frame!)
dim(base_de_dados)

# Primeiras 6 linhas de uma tabela
head(base_de_dados)

# Últimas 6 linhas de uma tabela
tail(base_de_dados)

# Retorna algumas informações sobre a base

summary(base_de_dados)

str(base_de_dados)

colnames(base_de_dados)

## Exercícios! ------------
# Use as funções que apresentamos agora para descobrir:

# a) Quantos voos a base que carregamos referente à fevereiro
# (base_de_dados_fev) apresenta? (Dica: cada voo é apresentado em uma linha)

nrow(base_de_dados_fev)
nrow(base_de_dados_marco)
nrow(base_de_dados_abril)

# b) Qual é a dimensão do data.frame base_de_dados_fev? E o que significa?

dim(base_de_dados_marco)

# Operadores de seleção de data.frames -------

## Selecionando elementos em um data.frame com o $ -------

# Usa o nome da coluna, e a retorna como um vetor!

base_de_dados$origem

base_de_dados$companhia_aerea

vetor_origem <- base_de_dados$origem

base_de_dados$destino[5]

# Dica: use o tab do teclado para usar a funcionalidade de autocompletar.

## Selecionando elementos em um data.frame com o [ ] -------

# Outra forma de selecionar elementos é utilizando 
# os colchetes, Exemplos: 

# Selecionando a coluna pelo nome:
# Retorna um vetor!
base_de_dados[["origem"]]
base_de_dados[["companhia_aerea"]]

# Selecionando a coluna pela posição (indexação):
# Retorna um vetor!
base_de_dados[[13]]
base_de_dados[[10]]


# Selecionando e mantendo a classe data.frame!
# uma coluna

# vetor[posicao]
base_de_dados$ano[c(1, 2, 3)]


# basededados[posicao_das_linhas, posicao_das_colunas]
base_de_dados[ , "ano"]


base_de_dados[, "origem"]


# Selecionando usando a função "select" do pacote "dplyr"

# vamos instalar um pacote novo!
# install.packages("dplyr")
library(dplyr)


# dplyr::select()

select(base_de_dados, origem)
select(base_de_dados, companhia_aerea)


select(base_de_dados, ano, mes, dia)
select(base_de_dados, ano:atraso_saida)

# A classe data frame tem uma característica especial: dimensão

dim(base_de_dados)

# vetores não tem dimensão!
vetor <- c(1, 2)
dim(vetor) 

# Subsetting em objetos com 2 dimensões: retorna como data.frame

# Sinxtaxe: data_frame[indice_linha, indice_coluna]

# Seleciona a linha 1 e a coluna 2
base_de_dados[1, 2] 

# Seleciona a linha 1 e TODAS as colunas
base_de_dados[1, ] 

# Seleciona TODAS as linhas e apenas a coluna 2
base_de_dados[ , 2] 


# Selecionando colunas

base_de_dados[, c(13, 10)]
base_de_dados[, c("origem", "companhia_aerea")]



# Exercício ---

# a) Considerando os meses de Janeiro e Fevereiro, em qual mês a distância
# total voada foi maior?

distancia_jan <- sum(base_de_dados$distancia)

distancia_fev <- sum(base_de_dados_fev$distancia)

# Dataframes e funções ------------

# Qual é a soma ....?
sum(base_de_dados$distancia)

# Menor valor encontrado: o menor número encontrado na coluna
min(base_de_dados$distancia)

# Maior valor encontrado: o maior número encontrado na coluna
max(base_de_dados$distancia)


# Média 
mean(base_de_dados$distancia)

# Mediana 
median(base_de_dados$distancia)

# Variância
var(base_de_dados$distancia)

# Desvio padrão
sd(base_de_dados$distancia)


# Datas no R ------------

# Datas e horas tem uma classe diferente no R, específica para isso!

class(base_de_dados$data_hora)

base_de_dados$data_hora

# função para transformar em data: neste caso, perderemos
# a informação sobre a hora

as.Date(base_de_dados$data_hora)


# também podemos converter um texto em formato data!

nascimento_texto <- c("1993-02-15")
class(nascimento_texto)

nascimento_data <- as.Date(nascimento_texto)
class(nascimento_data)


# e datas formatadas de outra forma?
nascimento_texto_br <- c("15/02/1993")

as.Date(nascimento_texto_br) # Resultado incorreto!


# usar argumento format para informar qual o formato da data
nascimento_data_br <- as.Date(nascimento_texto_br, format = "%d/%m/%Y") 

class(nascimento_data_br)


# Função Sys.Date() informa a data de hoje

Sys.Date()

# Podemos fazer operações matemáticas com datas

dias_desde_o_nascimento <- Sys.Date() - nascimento_data_br


# Função Sys.time() informa a data e hora de hoje, 
# além do fuso horário utilizado

hoje <- Sys.time()

class(hoje)

as.numeric(hoje) # segundos desde o dia 01 de janeiro de 1970



# Como criar um data.frame? -------------------

# A função data.frame() é uma forma de criar um data.frame.


# Uma forma de criar é juntando vetores com a função data.frame():

codigo_cauda <- c("N10156", "N102UW", "N103US")
ano <- c(2004, 1998, 1999)
motores <- c(2, 2, 2)
assentos <- c(55, 182, 182)

amostra_avioes <- data.frame(codigo_cauda, ano, motores, assentos)




# Outra forma de criar é diretamente com a função data.frame():
amostra_avioes2 <- data.frame(
           codigo_cauda = c("N10156", "N102UW", "N103US"),
           ano = c(2004, 1998, 1999),
           motores = c(2, 2, 2), 
           assentos = c(55, 182, 182)
           )

# Obs:dados parciais da base dados::avioes: 
# dados::avioes[1:3, c(1, 2, 6, 7)]



# Importacao
# url/excel

library(readxl)
url <- "http://orcamento.sf.prefeitura.sp.gov.br/orcamento/uploads/2022/basedadosexecucao2022.xlsx"
destfile <- "basedadosexecucao2022.xlsx"
curl::curl_download(url, destfile)
basedadosexecucao2022 <- read_excel(destfile)
View(basedadosexecucao2022)


# url/csv - muito mais curto com readr
library(readr)
imdb <- read_csv("https://raw.githubusercontent.com/curso-r/main-r4ds-1/master/dados/imdb.csv")
View(imdb)


# google sheets/url

url <- "https://docs.google.com/spreadsheets/d/1REPJkp1XCt-6ZkGSFO4A3U7pFWL3-CcV7xGZioP3Ryc/edit#gid=0"

# install.packages("googlesheets4")
library(googlesheets4)

base <- googlesheets4::read_sheet(url)
curso-r/202202-intro-programacao documentation built on April 6, 2022, 10:13 p.m.