r - 用另一个df的间隔改变df中的中位数
问题描述
我正在寻找一种方法来计算具有来自另一个数据帧的间隔的 df 中的中位数。
例子:
df_a <- tibble(values = c (1:30))
df_b <- tibble(lower_limit = c(1, 5, 11, 19),
upper_limit = c(3, 9, 17, 27))
现在我想改变一个名为“median”的向量,它根据 中的间隔限制df_b
从数据中计算中值,我该怎么做?问候!df_a
df_b
解决方案
我们可以使用map2
frompurrr
从 'df_a' 中提取 'values' 列,between
该范围为每个对应的范围列值,然后获取median
并创建一个新列
library(dplyr)
library(purrr)
df_b %>%
mutate(median = map2_dbl(lower_limit, upper_limit,
~ median(df_a$values[between(df_a$values, .x, .y)])))
-输出
# A tibble: 4 x 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
或与rowwise
df_b %>%
rowwise %>%
mutate(median = df_a %>%
filter(between(values, lower_limit, upper_limit)) %>%
summarise(values = median(values)) %>%
pull(values)) %>%
ungroup
-输出
# A tibble: 4 x 3
lower_limit upper_limit median
<dbl> <dbl> <int>
1 1 3 2
2 5 9 7
3 11 17 14
4 19 27 23
推荐阅读
- ignite - Apache Ignite CacheConfiguration 对每个数据集重复吗?
- javascript - 类型“{}”上不存在属性“名称” - Angular
- php - 无法在 Google 地图中显示来自 PHP 的坐标
- visual-studio-code - 如何在不同的扩展之间触发和接收事件
- javascript - 从 codepen 到网站时遇到问题
- android - Android 构建失败:gensecimage_target
- python - 如何在python中检测自引用列表
- reactjs - 语法错误关键字'import'react-loadable firefox
- spring - 为什么在 Spring Boot 应用程序中应用 Spring Security 后 application.properties 不执行属性?
- razor-pages - ASP.Net Core2 Razor 选择列表