ComeçarComece de graça

ifelse()

Uma função poderosa que vale a pena conhecer é ifelse(). Ela cria um if em 1 linha de código e, mais do que isso, funciona em vetores inteiros!

Suponha que você tenha um vetor de preços de ações. E se você quiser retornar "Buy!" toda vez que apple > 110, e "Do nothing!" caso contrário? Um if simples não seria suficiente para resolver esse problema. Porém, com ifelse() você pode fazer:

apple
[1] 109.49 109.90 109.11 109.95 111.03 112.12

ifelse(test = apple > 110, yes = "Buy!", no = "Do nothing!")
[1] "Do nothing!" "Do nothing!" "Do nothing!" "Do nothing!" "Buy!"       
[6] "Buy!"

ifelse() avalia test para obter um vetor lógico e, onde o vetor lógico é TRUE, substitui TRUE pelo que estiver em yes. Da mesma forma, FALSE é substituído por no.

O data frame stocks está disponível para você usar.

Este exercício faz parte do curso

R Intermediário para Finanças

Ver curso

Instruções do exercício

  • Use ifelse() para testar se micr está acima de 60 e abaixo de 62. Quando for verdadeiro, retorne 1 e, quando for falso, retorne 0. Adicione o resultado a stocks como a coluna micr_buy.
  • Use ifelse() para testar se apple é maior que 117. O valor retornado deve ser a coluna date se TRUE e NA caso contrário.
  • Imprima stocks. date virou numérica! ifelse() remove o atributo da data antes de retorná-la, então ela se torna numérica.
  • Atribua à coluna apple_date a class() de "Date".
  • Imprima stocks novamente.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# Microsoft test
stocks$micr_buy <- ifelse(test = ___, yes = ___, no = ___)

# Apple test
stocks$apple_date <- ifelse(test = ___, yes = stocks$date, no = NA)

# Print stocks
___

# Change the class() of apple_date.
class(___) <- ___

# Print stocks again
___
Editar e executar o código