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)
有没有一种好方法来优化计算每个值的百分位数的过程?本质上,我希望使其尽可能高效,以便运行时间尽可能短。
ecdf已经向量化了,没有理由使用函数apply。您可以简单地运行:
df$val.percentile <- ecdf(df$val)(df$val)
Run Code Online (Sandbox Code Playgroud)