ComenzarEmpieza gratis

ifelse()

Una función muy útil que conviene conocer es ifelse(). Crea una sentencia if en una sola línea de código y, además, ¡funciona sobre vectores completos!

Imagina que tienes un vector de precios de acciones. ¿Qué pasa si quieres devolver "Buy!" cada vez que apple > 110, y "Do nothing!" en caso contrario? Un simple if no sería suficiente para resolverlo. Sin embargo, con ifelse() puedes hacer:

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() evalúa test para obtener un vector lógico, y donde ese vector lógico es TRUE reemplaza TRUE por lo que haya en yes. Del mismo modo, FALSE se reemplaza por no.

El data frame stocks está disponible para que lo uses.

Este ejercicio forma parte del curso

R intermedio para finanzas

Ver curso

Instrucciones del ejercicio

  • Usa ifelse() para comprobar si micr está por encima de 60 pero por debajo de 62. Si es cierto, devuelve 1 y, si es falso, devuelve 0. Añade el resultado a stocks como la columna micr_buy.
  • Usa ifelse() para comprobar si apple es mayor que 117. El valor devuelto debe ser la columna date si es TRUE, y NA en caso contrario.
  • Imprime stocks. ¡date se ha convertido en numérico! ifelse() elimina el atributo de fecha antes de devolverlo, por eso pasa a ser numérico.
  • Asigna a la columna apple_date la class() de "Date".
  • Vuelve a imprimir stocks.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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 y ejecutar código