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
Istruzioni dell'esercizio
- Usa
ifelse()per verificare semicrè sopra60ma sotto62. Se vero, restituisci1, altrimenti0. Aggiungi il risultato astockscome colonnamicr_buy. - Usa
ifelse()per verificare seappleè maggiore di117. Il valore restituito deve essere la colonnadateseTRUE, eNAaltrimenti. - Stampa
stocks.dateè diventata numerica!ifelse()rimuove l'attributo della data prima di restituirla, quindi diventa un numero. - Assegna alla colonna
apple_datelaclass()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
___