首页 > 解决方案 > 检索由列表中最后 N 个值组成的每组中的最低/最高值

问题描述

我正在使用 R,但其他语言的解决方案也可以。

假设我有一个数字列表(排序,以便列表中连续值的实际顺序很重要)。

在每一行中,我想检索由列表本身中最后 N 个观测值组成的组中的最低/最高值。为此,我了解双步解决方案可能有效:

  1. 创建 N 个最新观测值的组
  2. 找到组中的最小值/最大值

然而,虽然第二点非常简单,但在第一点中需要创建 N 个重叠观察的组(即一组中的最后一个观察,成为下一组中的倒数第二个观察,等等)。

如何动态编码?

标签: rmaxgrouping

解决方案


如何使用frollapplyfrom data.table

library(data.table)
data <- data.table(A = 1:100,B = runif(100,100,200))
data[,`:=`(Min = frollapply(B,n=10,FUN=min), Max = frollapply(B,n=10,FUN=max)) ]

或者,如果您更喜欢预定义函数,则存在roll_minroll_maxfrom RcppRollby=这些还提供了使用参数的更大灵活性。


推荐阅读