R:窗口函数

标签 r window-functions sliding-window

我有一个数据框 DF,三列和 n 行如下所示:

Month Year  Default
1   2015    T
2   2015    T
3   2015    F
4   2015    T
5   2015    T
6   2015    T
7   2015    F

我想检查一卷中是否有 3 个 T 并继续进行,然后将所有起始年份和月份打印到一个新的 DF 中。

我需要获得如上所示的输出。输出应该是这样的:

Month   Year
4   2015

最佳答案

这是使用 data.table 的尝试 devel version on GH和新的 rleid 函数

library(data.table) # v 1.9.5+
setDT(df)[, indx := rleid(Default)]
df[(Default), if(.N > 2) .SD[1L], by = indx]
#    indx Month Year Default
# 1:    3     4 2015    TRUE

我们基本上在这里做的是在 Default 中为每个连续事件设置一个唯一索引,然后仅在 Default == TRUE 时查看我们检查每个group 如果组大小大于 2,则选择该组中的第一个实例。


一个较短的版本(由@Arun 提出)是

setDT(df)[, if(Default && .N > 2L) .SD[1L], by = .(indx = rleid(Default), Default)]

关于R:窗口函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31574057/

相关文章:

r - 根据单独的列值删除每行的列

sql - 如何识别和聚合开始日期和结束日期的序列

java - 在计算大小为 K 的非连续子数组之和时查找数组值

matlab - 用于事件识别的滑动​​窗口算法

R:如何使用 rCharts 绘制统计函数

r - 从 Shiny 的R中的散点图的多个选择生成多个表

R - 基于正则表达式的出现有条件地匹配数据帧之间的变量值

sql - 使用 Order By 计算分区中的行数

PostgreSQL 中的 SQL 窗口函数

TCP——接收方滑动窗口中的部分段