【发布时间】:2022-01-16 23:22:41
【问题描述】:
我有一个这样的data.frame。
library(tidyverse)
df <- tibble(
name = rep(c("a", "b"), each = 100),
value = runif(100*2),
date = rep(Sys.Date() + days(1:100), 2)
)
我想做一些与下面的代码非常相似的事情。有没有办法一次性创建这 10 列?基本上,我试图找出如果我们删除一个观察值,然后是 2,然后是 3,以此类推,99% 的分位数会发生多少变化。
df %>%
nest_by(name) %>%
mutate(
q99_lag_0 = data %>% pull(value) %>% quantile(.99),
q99_lag_1 = data %>% pull(value) %>% tail(-1) %>% quantile(.99),
q99_lag_2 = data %>% pull(value) %>% tail(-2) %>% quantile(.99),
q99_lag_3 = data %>% pull(value) %>% tail(-3) %>% quantile(.99),
q99_lag_4 = data %>% pull(value) %>% tail(-4) %>% quantile(.99),
q99_lag_5 = data %>% pull(value) %>% tail(-5) %>% quantile(.99),
q99_lag_6 = data %>% pull(value) %>% tail(-6) %>% quantile(.99),
q99_lag_7 = data %>% pull(value) %>% tail(-7) %>% quantile(.99),
q99_lag_8 = data %>% pull(value) %>% tail(-8) %>% quantile(.99),
q99_lag_9 = data %>% pull(value) %>% tail(-9) %>% quantile(.99),
q99_lag_10 = data %>% pull(value) %>% tail(-10) %>% quantile(.99)
)
【问题讨论】: