exemplos_de_aula/07-controle-de-fluxo.R

# Carregando pacotes ------------------------------------------------------

library(readr)

# Carregando os dados -----------------------------------------------------

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

# Controle de fluxo -------------------------------------------------------

# É muito comum usarmos operadores lógicos para fazer os nossos códigos 
# tomarem decisões.
# Para isso, utilizamos os controladores de fluxo.

# if: faz uma ação se a condição for atendida

# estrutura:
# if(CONDICAO) {
# ACAO
# }


x <- 1

if(x == 1) {         
  Sys.time()    
}

# if/else: faz uma ação se as condições anteriores não forem atendidas.

x <- 1

if(x < 0){
  "negativo"
} else { # se não
  "não negativo"
}

# else-if: generaliza o comportamento do if

x <- -10

if(x < 0) {
  "negativo"
} else if(x == 0) {
  "neutro"
} else {
  "positivo"
}

# Mais um exemplo de if! Contagem regressiva para o carnaval!

hoje <- Sys.Date()
carnaval <- as.Date("2022-02-26")

#hoje <- as.Date("2022-04-01")

if(hoje < carnaval){
  
  dias_para_carnaval <- as.numeric(carnaval - hoje) 
  paste("Faltam", dias_para_carnaval, "dias para o carnaval!")
  
}  else if(hoje == carnaval){
  
  paste("Hoje é carnaval!")
  
} else {
  
  paste("O carnaval de 2022 já passou... agora só ano que vem!")
  
}



# Exercícios --------------------------------------------------------------

# 1. Imagine que você é uma pessoa professora, e quer usar o R para saber
# se as pessoas alunas foram aprovadas ou não na disciplina,
# segundo a nota final.
# Usando o if, preencha os campos com ... abaixo para que o if retorne:
# aprovada se tiver nota maior  ou igual a 5,
# reprovada se tiver nota menor que 3,
# e recuperação se tiver nota maior que 3 e menor que 5.

nota <- 2.5

if(nota >= 5) {
  print("Aprovada")
  
} else if (nota < 3) {
  print("Reprovada")
  
} else if (nota < 5 & nota > 4) {
  print("Recuperação, mas tá perto de passar! Enviar um trabalho complementar.")
  
} else {
  print("Recuperação. Tem que fazer a prova de recuperação.")
}

# 2. Continuando o exercício anterior: 
# Depois de preencher os campos, teste o código com diferentes notas!
# O que o código retorna é coerente com a nota que você passou?





# Voltando a falar sobre tabelas!  ------------------------------------

# Vamos carregar mais uma base! Voos de fevereiro

base_de_dados_fev <- read_csv2("dados/voos_de_fevereiro.csv")

head(base_de_dados_fev)


# Queremos juntar as bases com dados de janeiro em fevereiro, e uma única base.
# a base contém as mesmas colunas!
# usar a funcao rbind() (de row bind)

base_jan_fev <- rbind(base_de_dados, base_de_dados_fev)

library(dplyr)
glimpse(base_jan_fev)


# testando a ideia do ale

jan_recortada <- base_de_dados[c("mes", "origem", "destino")]

fev_recortada <- base_de_dados_fev[c("mes", "origem", "cauda")]

# rbind não funciona bem se as colunas não forem
# exatamente as mesmas
# bind_recortes <- rbind(jan_recortada, fev_recortada)

# se precisar unir bases que tem numero de colunas diferentes,
# use a funcao bind_rows do dplyr
bind_recortes <- bind_rows(jan_recortada, fev_recortada)

# E se eu quiser adicionar uma nova coluna? 
# cbind()   (de column bind)

nome_mes <- "janeiro"
base_jan <- cbind(base_de_dados, nome_mes)

# como fazer isso com a sintaxe do dplyr?
base_jan_dplyr <- mutate(base_de_dados, nome_mes = "janeiro")
curso-r/202202-intro-programacao documentation built on April 6, 2022, 10:13 p.m.