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_dateкласс (class())"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
___