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

Итерация по строкам фрейма данных

Представьте, что вас интересуют дни, когда цена акций Apple поднимается выше 117. Если она превышает это значение, вы хотите вывести текущую дату и цену акции. Если у вас есть фрейм данных stock со столбцами date и apple, можно ли пройтись по строкам этого фрейма данных и решить эту задачу? Безусловно!

Прежде чем приступить, обратите внимание: количество строк в фрейме данных можно получить с помощью nrow(stock). Затем можно создать последовательность для итерации: 1:nrow(stock).

for (row in 1:nrow(stock)) {
    price <- stock[row, "apple"]
    date  <- stock[row, "date"]

    if(price > 117) {
        print(paste("On", date, 
                    "the stock price was", price))
    }
}
[1] "On 2016-12-21 the stock price was 117.06"
[1] "On 2016-12-27 the stock price was 117.26"

Этот пример объединяет многое из того, что вы уже изучили: условные операторы if, извлечение элементов векторов, условия и циклы! Отличный результат!

Фрейм данных stocks доступен для работы.

Это упражнение является частью курса

Средний уровень R для финансов

Посмотреть курс

Инструкции к упражнению

  • Заполните пропуски в цикле for, чтобы выполнялись следующие условия:
    • price должна содержать цену для текущей итерации
    • date должна содержать дату для текущей итерации
    • На этот раз проверяйте, превышает ли apple значение 116.
    • Если да — выведите date и price.
    • Если значение было ниже 116 — выведите date и сообщение о том, что этот день не был важным!

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Loop over stock rows
for (row in 1:___) {
    price <- stock[___, "___"]
    date  <- stock[___, "___"]

    if(___ > ___) {
        print(paste("On", ___, 
                    "the stock price was", ___))
    } else {
        print(paste("The date:", ___, 
                    "is not an important day!"))
    }
}
Редактировать и запускать код