IniziaInizia gratis

ifelse()

Una funzione molto utile da conoscere è ifelse(). Crea un'istruzione if in una sola riga di codice e, ancora meglio, funziona su interi vettori!

Immagina di avere un vettore di prezzi azionari. E se volessi restituire "Buy!" ogni volta che apple > 110, e "Do nothing!" altrimenti? Un semplice if non basterebbe per risolvere questo problema. Tuttavia, con ifelse() puoi fare:

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() valuta il test per ottenere un vettore logico e, dove il vettore è TRUE, sostituisce TRUE con quanto indicato in yes. Allo stesso modo, FALSE viene sostituito con no.

Il data frame stocks è a tua disposizione.

Questo esercizio fa parte del corso

R intermedio per la finanza

Visualizza il corso

Istruzioni dell'esercizio

  • Usa ifelse() per verificare se micr è sopra 60 ma sotto 62. Se vero, restituisci 1, altrimenti 0. Aggiungi il risultato a stocks come colonna micr_buy.
  • Usa ifelse() per verificare se apple è maggiore di 117. Il valore restituito deve essere la colonna date se TRUE, e NA altrimenti.
  • Stampa stocks. date è diventata numerica! ifelse() rimuove l'attributo della data prima di restituirla, quindi diventa un numero.
  • Assegna alla colonna apple_date la class() di "Date".
  • Stampa di nuovo stocks.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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
___
Modifica ed esegui il codice