r - 检索由列表中最后 N 个值组成的每组中的最低/最高值
问题描述
我正在使用 R,但其他语言的解决方案也可以。
假设我有一个数字列表(排序,以便列表中连续值的实际顺序很重要)。
在每一行中,我想检索由列表本身中最后 N 个观测值组成的组中的最低/最高值。为此,我了解双步解决方案可能有效:
- 创建 N 个最新观测值的组
- 找到组中的最小值/最大值
然而,虽然第二点非常简单,但在第一点中需要创建 N 个重叠观察的组(即一组中的最后一个观察,成为下一组中的倒数第二个观察,等等)。
如何动态编码?
解决方案
如何使用frollapply
from 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_min
和roll_max
from RcppRoll
。by=
这些还提供了使用参数的更大灵活性。
推荐阅读
- c# - Unity 2d 自上而下 RPG 风格,如何使用图层顺序排序处理瓷砖地图
- python - 如何在 Keras 中对简历段进行分类?
- c# - 从 Razor 页面中的数据库模型填充 TreeView
- graphql - 无法返回 null 或不可为 null 的字段 User.Role 无法从 prisma 突变中检索关系数据
- python - Matplotlib 使用滑块滚动图表时更新图表的更有效方式?
- javascript - 如何在其中插入一个javascript变量
- java - 使用 Scanner 类为构造函数变量获取用户输入
- php - 按一个数组的值对具有相同键的 2 个子数组进行排序
- swashbuckle - 如何删除此工件
- python-3.x - Python - 如何使用多变量重新输入异常?