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

问题描述 投票:1回答:1

我正在尝试使用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值反馈回此函数。但是,我仍然坚持如何用管道把它拉下来。

r dplyr purrr
1个回答
1
投票

ecdf输出一个函数,所以我们在按'level'分组后将'x_var'输入到输出函数中

library(dplyr)
samp_dat %>% 
    group_by(levels) %>%
    mutate(newval = ecdf(x_var)(x_var))
© www.soinside.com 2019 - 2024. All rights reserved.