我正在尝试使用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值反馈回该函数。但是,我一直坚持如何使用管道将其拉出。
答案 0 :(得分:1)
ecdf
输出一个函数,因此我们在按“级别”分组后将“ x_var”输入到输出函数中
library(dplyr)
samp_dat %>%
group_by(levels) %>%
mutate(newval = ecdf(x_var)(x_var))