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
Instruções do exercício
- Use
ifelse()para testar semicrestá acima de60e abaixo de62. Quando for verdadeiro, retorne1e, quando for falso, retorne0. Adicione o resultado astockscomo a colunamicr_buy. - Use
ifelse()para testar seappleé maior que117. O valor retornado deve ser a colunadateseTRUEeNAcaso contrário. - Imprima
stocks.datevirou numérica!ifelse()remove o atributo da data antes de retorná-la, então ela se torna numérica. - Atribua à coluna
apple_dateaclass()de"Date". - Imprima
stocksnovamente.
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
___