R语言提取满足条件的首行数据:获取深度首次大于0.61m对应的时间
R提取首次满足阈值条件对应时间的简单方法
核心实现思路
通过匹配第一个满足「深度大于0.61m」条件的行索引,直接提取对应时间值,无需复杂循环或第三方依赖,运行效率高,适合各类数据规模。
方法1:基础R实现(无任何依赖,推荐)
直接用which()函数定位符合条件的行位置,取第一个位置的时间值即可:
# 示例数据 rating_curve = data.frame(time_h = c(0.01, 0.02, 0.03, 0.04, 0.05, 0.06), depth_m = c(0, 0.2, 0.3, 0.5, 0.7, 0.62)) # 核心代码,仅需一行 first_time <- rating_curve$time_h[which(rating_curve$depth_m > 0.61)[1]]
运行后输出first_time即可得到预期结果:
[1] 0.05
如果需要处理无符合条件的场景,可加判断逻辑:判断length(which(rating_curve$depth_m > 0.61))是否大于0即可。
方法2:dplyr语法实现(适合tidyverse生态用户)
如果日常使用tidyverse系列工具,也可以用管道流写法实现:
library(dplyr) first_time <- rating_curve %>% filter(depth_m > 0.61) %>% slice(1) %>% pull(time_h)
内容的提问来源于stack exchange,提问作者Vinicius B. de S. Moreira。
相关产品推荐
相关产品推荐

