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

R语言如何基于另一数据框区间为目标数据框新增median列

R语言实现两个tibble的区间匹配中位数计算

方法1:使用rowwise按行处理(逻辑直观易理解)

首先加载依赖的tidyverse包:

library(tidyverse)

直接对df_b按行遍历,匹配df_a中符合区间的数值计算中位数:

df_b_result <- df_b %>%
  # 按行处理,每次读取当前行的上下限参数
  rowwise() %>%
  mutate(
    median = median(df_a$values[df_a$values >= lower_limit & df_a$values <= upper_limit])
  ) %>%
  # 取消行分组,避免影响后续数据操作
  ungroup()

方法2:使用purrr::pmap向量化处理(大数据量下性能更优)

无需行分组,直接通过pmap批量迭代每一行的上下限参数完成计算:

df_b_result <- df_b %>%
  mutate(
    median = pmap_dbl(
      list(lower_limit, upper_limit),
      function(low, high) median(df_a$values[df_a$values >= low & df_a$values <= high])
    )
  )

结果验证

运行后得到的df_b_result输出如下:

# A tibble: 4 × 3
  lower_limit upper_limit median
        <dbl>       <dbl>  <dbl>
1           1           3      2
2           5           9      7
3          11          17     14
4          19          27     23

内容的提问来源于stack exchange,提问作者Claudio Carrasco Hormazábal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:15:03