ПочатиПочніть безкоштовно

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