НачатьНачать бесплатно

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
___
Редактировать и запускать код