我有一个包含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
有人可以描述我如何制定这种条件吗?
使用lag
和mutate
来自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] 删除。
我来说两句