ifelse()
Funkce ifelse() je opravdu užitečná – zapíšeš podmínku na jediný řádek a navíc funguje na celé vektory!
Představ si, že máš vektor cen akcií. Chceš vrátit "Buy!" pokaždé, když apple > 110, a "Do nothing!" ve všech ostatních případech. Jednoduchý příkaz if by na to nestačil. S ifelse() to ale zvládneš takto:
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() vyhodnotí test a získá logický vektor. Všude, kde je hodnota TRUE, ji nahradí tím, co je v yes. Stejně tak FALSE nahradí hodnotou z no.
K dispozici máš datový rámec stocks.
Toto cvičení je součástí kurzu
Intermediate R for Finance
Pokyny k cvičení
- Pomocí
ifelse()otestuj, jestli jemicrvětší než60a zároveň menší než62. Pokud je podmínka splněna, vrať1, jinak0. Výsledek přidej dostocksjako sloupecmicr_buy. - Pomocí
ifelse()otestuj, jestli jeapplevětší než117. Pokud je podmínkaTRUE, vrať hodnotu ze sloupcedate, jinakNA. - Vypiš
stocks. Sloupec s datem se změnil na číslo!ifelse()před vrácením hodnoty odstraní atribut data, takže se z něj stane číslo. - Přiřaď sloupci
apple_datetřídu (class())"Date". - Vypiš
stocksznovu.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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
___