我正在尝试使用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值反馈回此函数。但是,我仍然坚持如何用管道把它拉下来。
ecdf
输出一个函数,所以我们在按'level'分组后将'x_var'输入到输出函数中
library(dplyr)
samp_dat %>%
group_by(levels) %>%
mutate(newval = ecdf(x_var)(x_var))