R语言判断相邻行分位数区间重叠 检验斜率变化显著性
实现方法
两个闭区间 [a1, a2] 和 [b1, b2] 存在重叠的判断逻辑为 !(a2 < b1 | a1 > b2),直接套用该逻辑计算相邻行的区间重叠状态即可,下面给出两种常用实现方案:
方案1:tidyverse 简洁实现(推荐)
代码可读性高,适合数据处理流程中直接嵌入:
library(dplyr) # 构造示例数据 df <- tribble( ~mean, ~`q2.5`, ~`q97.5`, 10, 8, 12, 15, 11, 16, 21, 19, 22, 34, 25, 35, 56, 52, 57 ) # 计算重叠标识列 df <- df %>% mutate( pre_q25 = lag(`q2.5`), pre_q975 = lag(`q97.5`), overlap = case_when( is.na(pre_q25) ~ NA, !(`q97.5` < pre_q25 | `q2.5` > pre_q975) ~ TRUE, .default = FALSE ) ) %>% select(-pre_q25, -pre_q975)
方案2:纯基础R实现
无需加载任何第三方包,适合轻量计算场景:
# 构造示例数据 df <- data.frame( mean = c(10,15,21,34,56), q2.5 = c(8,11,19,25,52), q97.5 = c(12,16,22,35,57) ) # 计算重叠标识列 n <- nrow(df) df$overlap <- c(NA, !(df$q97.5[-1] < df$q2.5[-n] | df$q2.5[-1] > df$q97.5[-n]))
两种方案运行后输出结果和你给出的预期完全一致。
内容的提问来源于stack exchange,提问作者user11709754
相关产品推荐
相关产品推荐

