Сначала я пытаюсь отфильтровать наблюдение, а затем использовать это наблюдение для дальнейшей фильтрации данных.
Регулярное выражение:
library(dplyr)
set.seed(10)
df <- data.frame(
nm = LETTERS[seq( from = 1, to = 20 )]
,vl = rnorm(20, 100, 1)
)
df$prctl = cume_dist(df$vl)
Я сделал это в 2 этапа, сначала фильтрация для наблюдения:
obs <- df %>%
filter(nm == "M") %>%
pull(prctl)
Затем используйте значение obs для дальнейшей фильтрации:
df %>%
filter(
between(
x = prctl
,left = obs - 0.05
,right = obs + 0.05
)
)
Это работает, но я чувствую, что могут быть более элегантные способы сделать это. Очевидно, что я могу заменить obs в последнем блоке фактическим кодом, но это будет означать, что код для левого и правого нужно будет оценить дважды.
Какие-нибудь изящные обходные пути для этого? Приветствия