r - 查找分位数或查找新数据点的范围

标签 r dataframe dplyr

我正在寻找一种更有效的方法来执行此操作,而不使用嵌套 ifelse()语句,我知道这会大大减慢 R 的速度。我无法分享我的实际数据(使用二十位,而不是五位),但希望我可以说明下面的问题。

假设我有以下五分位数和最大值的数据框。

pentiles <- data.frame(pentile = c(1:5), max_value = c(seq(10,50,10)))

对于一个新的数据帧,我希望能够查找给定值所在的 pentile,然后返回该 pentile。例如:

values <- data.frame(score = c(3, 15, 49, 34, 21))

应该给出(1, 2, 5, 4, 3)的解决方案以某种格式(values数据框中的独立向量或列。

我很熟悉dplyr想不出任何东西,但我很感激可能有一个 data.table我不知道的解决方案。提前致谢。

最佳答案

假设有一个最小值(例如0):

as.numeric(cut(values[,1], c(0, pentiles$max_value)))

关于r - 查找分位数或查找新数据点的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36628230/

相关文章:

python - 从两个不同的列中获取 id 值的滚动总和?

r - 使用 devtools::install_github() 安装无法检测到构建工具

r - 打印带有分栏符的小标题,如 v1.3.0 所示

python - 基于两列比较两个数据帧并打印匹配值并对匹配值进行分组

r:分组、删除列和求和

r - dplyr 根据多个条件替换列中的 na 值

r - dplyr() 中的非标准评估和 quasiquotation 未按(天真)预期工作

r - 从数据框中选择一组满足条件的列

python - 在 Rstudio 中安装 Python 模块

python - 根据 ID 和日期对输入进行计数