ifelse()
Корисна функція, про яку варто знати, — це ifelse(). Вона створює умовний вираз в один рядок коду, і більше того — працює з цілими векторами!
Припустімо, у вас є вектор цін акцій. Що робити, якщо ви хочете повертати "Buy!" щоразу, коли apple > 110, а інакше — "Do nothing!"? Простого if тут недостатньо. Проте з ifelse() можна зробити так:
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() обчислює test, щоб отримати логічний вектор. Там, де значення TRUE, воно замінюється тим, що вказано в yes. Відповідно, FALSE замінюється значенням no.
Датафрейм stocks доступний для використання.
Ця вправа є частиною курсу
Середній рівень R для фінансів
Інструкції до вправи
- Використайте
ifelse(), щоб перевірити, чиmicrперевищує60, але менше62. Якщо істина — повертайте1, якщо ні —0. Додайте результат доstocksяк стовпецьmicr_buy. - Використайте
ifelse(), щоб перевірити, чиappleбільше за117. ЯкщоTRUE, поверніть стовпецьdate, інакше —NA. - Виведіть
stocks.dateперетворився на числовий тип!ifelse()знімає з дати її атрибут перед поверненням значення, тож вона стає числовою. - Призначте стовпцю
apple_dateclass()зі значенням"Date". - Знову виведіть
stocks.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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
___