【问题标题】:Retrieve lowest/highest value in each group composed of the last N values in a list检索由列表中最后 N 个值组成的每个组中的最低/最高值
【发布时间】:2020-04-29 13:47:29
【问题描述】:

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

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

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

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

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

如何动态编码?

【问题讨论】:

    标签: r max grouping


    【解决方案1】:

    使用data.table 中的frollapply 怎么样?

    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)) ]
    

    或者,如果您更喜欢预定义函数,可以使用来自 RcppRollroll_minroll_max。这些还使用by= 参数提供了更大的灵活性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多