有效计算数据框列的百分位

AQS*_*AQS 3 r quantile dataframe ecdf

此问题是此处提出和回答的 StackOverflow 问题的扩展。

我的情况有所不同,因为我想计算 50,000 个(或更多!)值的向量内每个值的百分位数。例如 -

df <- data.frame(val = rnorm(n = 50000, mean = 50, sd = 20))
df$val.percentile <- sapply(X = df$val, function(x) ecdf(df$val)(x))
head(df)
Run Code Online (Sandbox Code Playgroud)

有没有一种好方法来优化计算每个值的百分位数的过程?本质上,我希望使其尽可能高效,以便运行时间尽可能短。

Bar*_*ker 5

ecdf已经向量化了,没有理由使用函数apply。您可以简单地运行:

df$val.percentile <- ecdf(df$val)(df$val)
Run Code Online (Sandbox Code Playgroud)