r - 嵌套分类变量,引导程序,然后在 R 中提取中位数
问题描述
我在看似简单的解决方案上遇到了麻烦。我有一个数据框,locations
每个位置都有一个value
与之关联的。我按位置嵌套了 data.frame,然后使用purrr
(见下文)引导值。
library(tidyverse)
library(modelr)
library(purrr)
locations <- c("grave","pinkham","lower pinkham", "meadow", "dodge", "young")
values <- rnorm(n = 100, mean = 3, sd = .5)
df <- data.frame(df)
df.boot <- df %>%
nest(-locations) %>%
mutate(boot = map(data,~bootstrap(.,n=100, id = "values")))
现在我试图从最终列表中的每个引导程序中获取中位数df.boot$boot
,但似乎无法弄清楚?我尝试过申请map(boot, median)
,但我越深入挖掘越没有意义。boot
列表中想要的向量是idx
我可以从中获取中值然后存储它(几乎是boot
函数所做的,但通过唯一的分类变量迭代)。任何帮助将非常感激。我可能只是走错路了……
解决方案
如果我们需要提取median
library(dplyr)
library(purrr)
library(modelr)
out <- df %>%
group_by(locations) %>%
nest %>%
mutate(boot = map(data, ~ bootstrap(.x, n = 100, id = 'values') %>%
pull('strap') %>%
map_dbl(~ as_tibble(.x) %>%
pull('values') %>%
median)))
out
# A tibble: 6 x 3
# Groups: locations [6]
# locations data boot
# <fct> <list> <list>
#1 pinkham <tibble [12 × 1]> <dbl [100]>
#2 lower pinkham <tibble [17 × 1]> <dbl [100]>
#3 meadow <tibble [16 × 1]> <dbl [100]>
#4 dodge <tibble [22 × 1]> <dbl [100]>
#5 grave <tibble [21 × 1]> <dbl [100]>
#6 young <tibble [12 × 1]> <dbl [100]>
数据
df <- data.frame(values, locations = sample(locations, 100, replace = TRUE))
推荐阅读
- python - 没有链接时如何查找 URL
- docker - 使用 Docker 简化项目设置
- javascript - 在反应中访问父组件之外的组件的子道具
- python - 如何在不提及半径的情况下找到城市中的所有餐厅
- clickhouse - clickhouse-copier 可以在集群版本 20.3.8 中工作
- swift - XCODE 13 创建自己的具有依赖关系的框架
- spring-cloud - Spring cloud openfeign 3.0.1回退未被触发
- node.js - 为什么拦截器中的 config.headers 可能未定义
- google-data-studio - 过滤数据时防止调用cummunity连接器的getData
- python - 如何从 .csv 文件中提取特定数据并使用 Python 将其存储在变量中