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
相关产品推荐
相关产品推荐

