Создание столбца направления на основе логических условий - PullRequest
0 голосов
/ 09 июля 2019

В настоящее время я работаю над набором данных финансовых временных рядов и пытаюсь создать новую переменную под названием Направление, основанную на наблюдениях за нормой доходности (RoR). По сути, если текущее значение RoR выше, чем в предыдущие дни, направление будет «Вверх», а если ниже, «Вниз».

Я почти уверен, что мог бы комбинировать циклы с ifelse для создания переменной, но я довольно плохо знаком с R и не могу придумать способ написать код, который привел бы к желаемому результату. Мне удалось создать нужную переменную в Excel с помощью функции: IF (G4> G3, «Вверх», IF (G4 = G3, «Без изменений», «Вниз»)), но я не знаю, как перевести эта функция в коде R

Могу ли я использовать какие-либо пакеты, если нет, какой код приведет к желаемым результатам?

1 Ответ

2 голосов
/ 09 июля 2019

Вы можете использовать diff с sign, предполагая, что df - ваш фрейм данных, а ROR - имя столбца.

df$direction <- c(NA, c("Down", "No change", "Up")[sign(diff(df$ROR)) + 2])

Используя пример

x <- c(1, 2, 3, 4, 2, 2, 1)
c(NA, c("Down", "No change", "Up")[sign(diff(x)) + 2])
#[1] NA          "Up"        "Up"        "Up"        "Down"      "No change" "Down" 

Или мы можем использовать case_when

library(dplyr)

df %>%
  mutate(direction = case_when(ROR > lag(ROR) ~ "Up", 
                           ROR < lag(ROR) ~ "Down", 
                           ROR == lag(ROR) ~ "No change",
                           TRUE ~ NA_character_))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...