ifelse()
O funcție utilă pe care merită s-o cunoști este ifelse(). Aceasta îți permite să scrii o instrucțiune if pe o singură linie de cod și, mai mult decât atât, funcționează pe vectori întregi!
Să presupunem că ai un vector cu prețurile acțiunilor. Ce-ar fi dacă ai vrea să returnezi "Buy!" de fiecare dată când apple > 110, și "Do nothing!" în rest? Un simplu if nu ar fi suficient pentru a rezolva această problemă. Cu ifelse() însă, poți face:
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() evaluează test pentru a obține un vector logic, iar acolo unde vectorul logic este TRUE, valoarea TRUE este înlocuită cu ce se află în yes. Similar, FALSE este înlocuit cu no.
Dataframe-ul stocks este disponibil pentru a-l folosi.
Acest exercițiu face parte din cursul
R intermediar pentru finanțe
Instrucțiuni pentru exercițiu
- Folosește
ifelse()pentru a testa dacămicreste mai mare decât60, dar mai mic decât62. Când condiția este adevărată, returnează1; când este falsă, returnează0. Adaugă rezultatul înstocksca o coloană numitămicr_buy. - Folosește
ifelse()pentru a testa dacăappleeste mai mare decât117. Valoarea returnată ar trebui să fie coloanadatedacă condiția esteTRUE, respectivNAîn caz contrar. - Afișează
stocks.datea devenit numeric!ifelse()elimină atributul datei înainte de a o returna, astfel că aceasta devine numerică. - Atribuie coloanei
apple_dateclasa (class())"Date". - Afișează din nou
stocks.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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
___