【发布时间】:2020-02-07 07:58:17
【问题描述】:
我正在尝试先过滤观察结果,然后使用该观察结果进一步过滤数据。
正则表达式:
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)
我分两步完成,首先是过滤观察:
obs <- df %>%
filter(nm == "M") %>%
pull(prctl)
然后使用obs值进一步过滤:
df %>%
filter(
between(
x = prctl
,left = obs - 0.05
,right = obs + 0.05
)
)
这可行,但我觉得可以有更优雅的方法来做到这一点。显然我可以将最后一个块中的 obs 替换为实际代码,但这意味着 left 和 right 的代码需要计算两次。
有什么优雅的解决方法吗?干杯
【问题讨论】:
-
请在生成随机数据时使用
set.seed以获得可重复性。此外,生成df的代码在当前形式下也不起作用。 -
@RonakShah 干杯是的,我在复制和粘贴代码块时很着急。现已更新