根据逻辑条件创建方向列

时间:2019-07-09 04:31:10

标签: r

我目前正在处理金融时间序列数据集,并且尝试基于对收益率(RoR)的观察来创建一个名为Direction的新变量。本质上,如果当前RoR高于前几天的RoR,则方向将为“向上”,如果方向较低,则为“向下”。

我敢肯定,我可以将if循环与if循环结合使用来创建变量,但是我对R还是很陌生,我想不出一种方法来编写可导致所需输出的代码。我可以使用以下函数在excel中创建所需的变量:IF(G4> G3,“ Up”,IF(G4 = G3,“ No Change”,“ Down”))),但我不知道如何翻译此功能转换为R代码

我可以使用任何软件包吗?如果没有,什么代码会导致预期的结果?

1 个答案:

答案 0 :(得分:2)

您可以将diffsign一起使用,假设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_))
相关问题