ifelse()函数-参考第二天

TobKel

我有一个包含2列的数据框:日期和返回值。

df <- tibble( 
date = lubridate::today() +0:9,
return= c(1,2.5,2,3,5,6.5,1,9,3,2))

现在,我要添加带有ifelse条件的第三列。如果第t天的收益大于3.5,则第二天t + 1的重做为NA(否则=第t天的收益)。

这是我想要的输出:

date         return      retrun_subsequent_day
<date>       <dbl>       <dbl>
1 2019-03-14    1        1
2 2019-03-15    2.5      2.5
3 2019-03-16    2        2
4 2019-03-17    3        3
5 2019-03-18    5        5
6 2019-03-19    6.5      NA
7 2019-03-20    1        NA
8 2019-03-21    9        9
9 2019-03-22    3        NA
10 2019-03-23   2        2

有人可以描述我如何制定这种条件吗?

布雷特劳森

使用lagmutate来自dplyr使用lag时,我们将return上一行-value与3.5进行比较:如果大于或等于,则采用NA;如果较小,则采用当前行的返回值

library(dplyr)

df <- df %>% mutate(return_subsequent_day = ifelse(lag(return, default = 0) >= 3.5, NA, return))

输出:

# A tibble: 10 x 3
   date       return return_subsequent_day
   <date>      <dbl>                 <dbl>
 1 2019-03-14    1                     1  
 2 2019-03-15    2.5                   2.5
 3 2019-03-16    2                     2  
 4 2019-03-17    3                     3  
 5 2019-03-18    5                     5  
 6 2019-03-19    6.5                  NA  
 7 2019-03-20    1                    NA  
 8 2019-03-21    9                     9  
 9 2019-03-22    3                    NA  
10 2019-03-23    2                     2  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章