You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于DataFrame时间戳列校验各ID下数值低于100持续时长是否达30分钟

R语言分组校验连续低值时长问题

需求描述

现有包含三列的DataFrame,结构如下:

  • 第一列为唯一ID:HADM_ID
  • 第二列为数值型指标:VALUE
  • 第三列为POSIXct格式时间列:time
    需要按HADM_ID分组单独校验:任意时间点起VALUE连续低于100的时长是否达到至少30分钟,结果存入新增Boolean类型列BELOW,满足条件标记为TRUE,不满足标记为FALSE,布尔值需标记在对应时段的起始行。

样例数据

前10条观测的dput导出结果如下:

> dput(bp2s[1:10])
structure(list(HADM_ID = c(100210L, 100210L, 100210L, 100210L, 
                                 100210L, 100210L, 100210L, 100210L, 100210L, 100210L), VALUE = c(112L, 
                                                                                                  120L, 121L, 112L, 106L, 109L, 80L, 89L, 85L, 99L), time = structure(c(5976682620, 
                                                                                                                                                                        5976684000, 5976687600, 5976691200, 5976694800, 5976698400, 5976785280, 
                                                                                                                                                                        5976788400, 5976790200, 5976792000), tzone = "", class = c("POSIXct", 
                                                                                                                                                                                                                                   "POSIXt"))), row.names = c(NA, -10L), class = c("data.table", 
                                                                                                                                                                                                                                                                                   "data.frame"))

理想输出示例

HADM_ID VALUE                TIME BELOW
1:  100210    92 2159-05-26 08:40:00 TRUE
2:  100210    98 2159-05-26 09:00:00 FALSE
3:  100210   105 2159-05-26 09:12:00 FALSE
4:  100889    92 2166-08-15 14:50:00 FALSE
5:  100889    98 2166-08-15 15:00:00 FALSE
6:  100889   101 2166-08-15 15:15:00 FALSE
7:  100520    89 2133-02-03 14:15:00 TRUE
8:  100520   102 2133-02-03 15:15:00 FALSE

实现方案问题

tidyverse方案问题

时间差计算逻辑正常,首次满足低于100超30分钟的第7条观测识别正确,但后续仍处于低于100区间的第8、9条观测被错误标记为FALSE,错误输出如下:

HADM_ID VALUE time                time_diff   grp below
     <int> <int> <dttm>              <drtn>    <int> <lgl>
 1  100210   112 2159-05-24 15:37:00   23 mins     1 FALSE
 2  100210   120 2159-05-24 16:00:00   60 mins     2 FALSE
 3  100210   121 2159-05-24 17:00:00   60 mins     3 FALSE
 4  100210   112 2159-05-24 18:00:00   60 mins     4 FALSE
 5  100210   106 2159-05-24 19:00:00   60 mins     5 FALSE
 6  100210   109 2159-05-24 20:00:00 1448 mins     6 FALSE
 7  100210    80 2159-05-25 20:08:00   52 mins     6 TRUE 
 8  100210    89 2159-05-25 21:00:00   30 mins     6 FALSE #should be TRUE since Value stays under 100 for next 30 min
 9  100210    85 2159-05-25 21:30:00   30 mins     6 FALSE #should be TRUE see above 
10  100210    99 2159-05-25 22:00:00   30 mins     6 FALSE

data.table方案

输出完全符合预期,结果如下:

HADM_ID VALUE                time            timenext grp BELOW
 1:  100210   112 2159-05-24 15:37:00 2159-05-24 15:37:00   1 FALSE
 2:  100210   120 2159-05-24 16:00:00 2159-05-24 16:00:00   1 FALSE
 3:  100210   121 2159-05-24 17:00:00 2159-05-24 17:00:00   1 FALSE
 4:  100210   112 2159-05-24 18:00:00 2159-05-24 18:00:00   1 FALSE
 5:  100210   106 2159-05-24 19:00:00 2159-05-24 19:00:00   1 FALSE
 6:  100210   109 2159-05-24 20:00:00 2159-05-24 20:00:00   1 FALSE
 7:  100210    80 2159-05-25 20:08:00 2159-05-25 21:00:00   2  TRUE
 8:  100210    89 2159-05-25 21:00:00 2159-05-25 21:30:00   2  TRUE
 9:  100210    85 2159-05-25 21:30:00 2159-05-25 22:00:00   2  TRUE
10:  100210    99 2159-05-25 22:00:00 2159-05-25 22:30:00   2  TRUE
11:  100210    89 2159-05-25 22:30:00 2159-05-25 23:00:00   2 FALSE
12:  100210   102 2159-05-25 23:00:00 2159-05-25 23:00:00   3 FALSE

内容的提问来源于stack exchange,提问作者Chickenleg Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 19:54:02