ifelse()
Warto poznać bardzo przydatną funkcję ifelse(). Pozwala ona zapisać instrukcję warunkową w jednej linii kodu, a co więcej – działa na całych wektorach!
Wyobraź sobie, że masz wektor cen akcji. Co zrobić, jeśli chcesz zwracać "Buy!" za każdym razem, gdy apple > 110, a "Do nothing!" w pozostałych przypadkach? Zwykła instrukcja if nie wystarczy do rozwiązania tego problemu. Z funkcją ifelse() możesz to zrobić tak:
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!"
Funkcja ifelse() oblicza wartość test, otrzymując wektor logiczny. Wszędzie tam, gdzie wektor logiczny ma wartość TRUE, wstawia wartość podaną w argumencie yes. Analogicznie, wartości FALSE są zastępowane przez no.
Do dyspozycji masz ramkę danych stocks.
To ćwiczenie jest częścią kursu
R dla finansów – poziom średnio zaawansowany
Instrukcje do ćwiczenia
- Użyj funkcji
ifelse(), aby sprawdzić, czymicrjest większe od60i jednocześnie mniejsze od62. Gdy warunek jest spełniony, zwróć1, w przeciwnym razie zwróć0. Wynik dodaj do ramki danychstocksjako kolumnęmicr_buy. - Użyj funkcji
ifelse(), aby sprawdzić, czyapplejest większe od117. Gdy warunek jestTRUE, zwróć kolumnędate, a gdyFALSE– wartośćNA. - Wyświetl
stocks. Kolumna z datą zamieniła się na liczby! Funkcjaifelse()usuwa atrybut daty przed zwróceniem wyniku, dlatego wartości stają się numeryczne. - Przypisz kolumnie
apple_dateklasę"Date"za pomocą funkcjiclass(). - Wyświetl
stocksponownie.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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
___