如何根据开始和结束条件过滤数据?

2024-04-30

我试图根据依赖于连续日期的两个条件来过滤数据。

  • 我在寻找对于 5 个以上的连续日期,值低于 2,
  • with a “缓冲期” of 值 2 到 5 最多连续 3 天.

它看起来像这样(很抱歉这里的 Excel 尝试很糟糕):

第 1 天到第 10 天将包括在内,第 11 天将不包括在内。第 6 天到第 8 天将被视为“缓冲期”。我希望这是有道理的!!

现在,我可以获得缓冲期(在代表中)仅但我不知道如何添加开始和结束条件 对于小于 2 的值5 个连续日期被包括 (这 5 天可能会因中间的缓冲期而被打破,但我觉得这可能会让事情变得复杂).

任何帮助将不胜感激!

对于我的代表(below),最终 df 中包含的日期为蓝色(日期从 1/1/2000 到 1/9/2000,以及 1/22/2000 到 1/30/2000),而灰色日期则不会是。

Reprex:

    library("dplyr")
#Goal: include all values with values of 2 or less for 5 consecutive days and allow for a "cushion" period of values of 2 to 5 for up to 3 days
data <- data.frame(Date = c("2000-01-01", "2000-01-02", "2000-01-03", "2000-01-04", "2000-01-05", "2000-01-06", "2000-01-07", "2000-01-08", "2000-01-09", "2000-01-10", "2000-01-11", "2000-01-12", "2000-01-13", "2000-01-14", "2000-01-15", "2000-01-16", "2000-01-17", "2000-01-18", "2000-01-19", "2000-01-20", "2000-01-21", "2000-01-22", "2000-01-23", "2000-01-24", "2000-01-25", "2000-01-26", "2000-01-27", "2000-01-28", "2000-01-29", "2000-01-30"),
               Value = c(2,3,4,5,2,2,1,0,1,8,7,9,4,5,2,3,4,5,7,2,6,0,2,1,2,0,3,4,0,1))

head(data)                   
#Goal: values should include dates from 1/1/2000 to 1/9/2000, and 1/22/2000 to 1/30/2000

#I am able to subset the "cushion period" but I'm not sure how to add the starting and ending conditions for it
attempt1 <- data %>% 
  group_by(group_id = as.integer(gl(n(),3,n()))) %>% 
  filter(Value <= 5 & Value >=3) %>% 
  ungroup() %>% 
  select(-group_id)

head(attempt1)

如果我理解正确,则需要保留小于或等于 5 的连续值组,其中至少有 5 个小于或等于 2 的连续值。这是一种方法,并附有一些解释:

library(dplyr)

data %>% 
  mutate(under_three = Value <= 2) %>% 
  # under_three = TRUE if Value is below or equal to 2

  group_by(rl_two = data.table::rleid(Value <= 2)) %>%
  # Group by sequence of values that are under_three

  mutate(big = n() >= 5 & all(under_three)) %>%
  # big = T if there are more 5 or more consecutive values that are below or equal to 2  

  group_by(rl_five = data.table::rleid(Value <= 5)) %>% 
  # ungroup by rl_two, and group by rl_five, i.e. consecutive values that are below or equal to 5

  filter(any(big))
  # keep from the data frame groups of rl_five if they have at least one big = T; remove other groups.

Output:

data %>%
  ungroup() %>% 
  select(Date, Value)

   Date       Value
 1 2000-01-01     2
 2 2000-01-02     3
 3 2000-01-03     4
 4 2000-01-04     5
 5 2000-01-05     2
 6 2000-01-06     2
 7 2000-01-07     1
 8 2000-01-08     0
 9 2000-01-09     1
10 2000-01-22     0
11 2000-01-23     2
12 2000-01-24     1
13 2000-01-25     2
14 2000-01-26     0
15 2000-01-27     3
16 2000-01-28     4
17 2000-01-29     0
18 2000-01-30     1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据开始和结束条件过滤数据? 的相关文章

随机推荐

  • Android 表单验证 UI 库

    有iOSUS2表单验证器 https github com ustwo US2FormValidator用于用户输入验证的库 见下图 我认为该库比默认情况下在某些内容未验证时弹出警报更好 我正在寻找如何在 Android 上做这样的事情 有
  • 保护登录和评论表单免受 CSRF 攻击

    我读过很多关于CSRF保护的文章 这个不错 http seclab stanford edu websec csrf csrf pdf 以及关于SO的各种问题 但它们似乎都没有足够的信息来回答我的问题 我正在开发自己的 CMS 我想保护我的
  • 如何检查节点中的req.body是否为空,express?

    下面是我的请求正文 它是从客户端发送的 var credentials ConsumerData ConsumerStoreId a ConsumerUserId a CustomerData CustomerId 2345678890 E
  • ASP.NET 服务器端或客户端的验证控件?

    ASP NET 中的验证控件在服务器端和客户端都有效吗 或者它仅用于客户端验证 Thanks ASP NET 验证控件执行这两项操作client side and server side验证 EnableClientValidation是财
  • 使用 Jinja2 模板在 HTML 文本区域中显示 FastAPI 响应(元组)

    这是我的 FastAPI 后端 main py from typing import Optional from fastapi import FastAPI Request Form from fastapi templating imp
  • 国际天气 API (PHP) [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找最好的 免费 便宜 国际天气 PHP API 有什么建议么 看看这个答案 https sta
  • 在 C++ 中将 unix 时间戳转换为星期几?

    如何根据任意 Unix 时间戳 秒 确定加利福尼亚州的星期几 太平洋时间 我四处搜寻 但没有找到 C 的内置库 UTC 通常比 PT 早 8 小时 但只需从 Unix 时间戳中减去 8 小时并创建一个tmstruct 不起作用 因为这会折扣
  • 未处理的拒绝(ChunkLoadError):加载块 1 失败

    我基本上想做一个poc将我的主应用程序的某些部分提取到一个单独的包中 我已在我的 git 存储库中构建了一个示例单独包myapp poc ui https github com prabhatmishra33 myapp poc ui 现在
  • 将自行车分配给人员 - 第一优先级(距离最近的人最近的自行车)

    将网格传递给某个位置有自行车和人员的函数 c A a b D d B C Output 像这样的东西 A 1 B 3 C 8 D 1 其中 A 是人 1 是到达自行车所需的步数 标准 距离自行车最近的人 优先获得自行车 单辆自行车不能分配给
  • 如何让 gcc/clang 警告 switch 语句中缺少中断

    有什么办法可以使gcc or clang警告 switch 语句中缺少中断 具体来说 我几乎总是希望 case 语句以中断结束 如果我不这样做的话 如果我能让编译器抱怨 那就太好了 如果它会寻找一个break语句或一个 fall throu
  • 如何在此 API 中声明全局变量?

    我的应用程序有一个production or development我可以切换的设置 设置服务器时 我在中设置了这个标志Applications gt Mamp gt Conf gt Apache gt httpd conf 它的目的是给我
  • 在学说监听器中插入元素

    我已经设置了一个学说监听器 它在不同的数据库操作上触发并创建一个日志实体并将其插入数据库 class FOO public function onFlush OnFlushEventArgs args foreach args gt get
  • 获取月份名称而不是数字

    我正在使用 jQuery 日期选择器插件 我可以通过以下方式获取月份数 datepicker datepicker getDate getMonth 1 如何直接获取月份名称 即不使用switch case 如果您想要一个简单的解决方案 就
  • 在基于 Android Gradle 的项目中设置集成测试

    我正在跟进this http www petrikainulainen net programming gradle getting started with gradle integration testing 将集成测试环境添加到我的
  • 在 Obj C 中使用 Brad Larson GPUImage 创建照片草图效果

    您好 我想尝试使用 Brad Larson 的照片上的素描效果GPUImage sdk in iOS 我正在尝试创建这样的草图效果 但我得到的素描效果是这样的 我正在使用 GPUImageSketchFilter 来创建此效果 以下是我为实
  • 如何让 lodash 与 Angular JS 一起工作?

    我正在尝试使用 lodash 使用它ng repeat指令 以这种方式 div div Hello n div div Being GridController IndexModule controller GridController f
  • 如果 POSIX 系统上不存在目录,是否有办法自动创建该目录?

    POSIX 系统上是否有任何方法可以仅在目录尚不存在时才自动创建该目录 如同 int fd open path to file O CREAT O EXCL O RDWR 0644 这不起作用 int dfd open path to di
  • 计算串行通信的块校验字符 (BCC)

    我通过 NET 的 SerialPort 类通过串行与设备进行通信 并且根据第三方设备规范要求 我需要计算 块检查字符 我被告知的唯一信息是 这是一个异或运算 XOR 并且必须对所有角色执行 那么 如果我有字符串 Bob 001 将如何计算
  • 如何在RecyclerView中实现setOnScrollListener

    当用户到达列表中可见的项目时 如何在底部显示进度栏 我已经编写了一个代码 其中我使用网络服务获取数据 现在我想填充部分记录 因为我有大约630 条记录在我的 JSON 中 这是我用来从 JSON 获取数据并填充到 RecyclerView
  • 如何根据开始和结束条件过滤数据?

    我试图根据依赖于连续日期的两个条件来过滤数据 我在寻找对于 5 个以上的连续日期 值低于 2 with a 缓冲期 of 值 2 到 5 最多连续 3 天 它看起来像这样 很抱歉这里的 Excel 尝试很糟糕 第 1 天到第 10 天将包括