ÎncepețiÎncepe gratuit

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

Vezi cursul

Instrucțiuni pentru exercițiu

  • Folosește ifelse() pentru a testa dacă micr este mai mare decât 60, dar mai mic decât 62. Când condiția este adevărată, returnează 1; când este falsă, returnează 0. Adaugă rezultatul în stocks ca o coloană numită micr_buy.
  • Folosește ifelse() pentru a testa dacă apple este mai mare decât 117. Valoarea returnată ar trebui să fie coloana date dacă condiția este TRUE, respectiv NA în caz contrar.
  • Afișează stocks. date a devenit numeric! ifelse() elimină atributul datei înainte de a o returna, astfel că aceasta devine numerică.
  • Atribuie coloanei apple_date clasa (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
___
Editează și rulează codul