我有一个称为df的数据框。有20行和2个变量test_value和day。我想创建一个名为test_x_max的新变量。它将捕获先前x个记录中的最大值。例如:如果我们假设X为5,那么如果我们查看第15行,则需要在第10天到第15天之间选择最大test_value。提前致谢。帕万
您可以zoo::rollmax
结合使用cummax
:
library(zoo)
df$test_x_max <- c(cummax(df$test_value[1:4]), rollmax(df$test_value, 5, align = "right"))
例如:
set.seed(100)
df <- data.frame(day = 1:20, test_value = sample(20))
df$test_x_max <- c(cummax(df$test_value[1:4]), rollmax(df$test_value, 5, align = "right"))
df
#> day test_value test_x_max
#> 1 1 10 10
#> 2 2 6 10
#> 3 3 16 16
#> 4 4 14 16
#> 5 5 12 16
#> 6 6 7 16
#> 7 7 19 19
#> 8 8 17 19
#> 9 9 4 19
#> 10 10 15 19
#> 11 11 13 19
#> 12 12 2 17
#> 13 13 11 15
#> 14 14 8 15
#> 15 15 3 13
#> 16 16 9 11
#> 17 17 1 11
#> 18 18 20 20
#> 19 19 18 20
#> 20 20 5 20
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句