过滤数据,然后使用nest()

时间:2018-08-07 13:36:37

标签: r tidyverse purrr

我想使用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))

当我期望它们相同时,我看不出它们为什么略有不同。对我在做什么错有任何想法吗?谢谢!

0 个答案:

没有答案