我想使用purrr遍历数据帧的子组。但是在每个子组中,我也想修剪一些离群值,将自变量的第99个百分数削减(在该子组内)。
奇怪的是,当我尝试以下操作时,得到的结果会略有不同。
# generate a mock df:
set.seed(12345)
library(fabricatr)
library(tidyverse)
df <- fabricate(N = 1000,
DV = rbinom(n = N, prob = 0.5, size = 1),
X1 = rnorm(n = N),
group = rep(1:2, 500))
在此处比较mods1的前2行中给出的输出:
mods1 <- df %>%
nest(-group) %>%
mutate(filtered = map(data, ~ filter(.,
( (X1 < quantile(X1, 0.99)) )
))) %>%
mutate(
test = map(filtered, ~ lm(DV ~ X1, data = .)),
tidied = map(test, tidy)
) %>%
unnest(tidied, .drop = TRUE)
...输出结果位于mods_grp1的2行中,此处为
newdf <- df %>% filter(group==1 & (X1 < quantile(X1, 0.99)) )
mods_grp1 <- tidy(lm(DV ~ X1, data = newdf))
当我期望它们相同时,我看不出它们为什么略有不同。对我在做什么错有任何想法吗?谢谢!