为使用purrr:map创建的函数生成值

时间:2019-05-01 20:24:35

标签: r dplyr purrr

我正在尝试使用purrr:map为df中x_var的值创建经验累积百分比,这些值对于因子变量的每个级别都是唯一的。

理想情况下,我希望将结果设为长df,其中各列如下所示:

级别(长)| x_var | epcd_val

这是一个例子:

# load packs
if(!require("pacman"))install.packages("pacman")
p_load(dplyr, tibble, purrr)

# generate fake data
samp_dat <- tibble(
x_var = rnorm (1000, 0, 1),
levels = sample(LETTERS[1:4], 1000, replace=TRUE, prob=c(0.25, 0.50, 0.125, 0.125)))

# generates a list of ecdf functions for each level
ecdfs <- samp_dat %>%
  group_split(levels) %>%
  map(., ~ ecdf(.x$x_var)) 

生成的ecdfs是edcf函数的列表,该函数对于级别中的每个级别都是唯一的。

然后我需要以某种方式将按级别分组的x_var值反馈回该函数。但是,我一直坚持如何使用管道将其拉出。

1 个答案:

答案 0 :(得分:1)

ecdf输出一个函数,因此我们在按“级别”分组后将“ x_var”输入到输出函数中

library(dplyr)
samp_dat %>% 
    group_by(levels) %>%
    mutate(newval = ecdf(x_var)(x_var))