我正在寻找一种更有效的方法来执行此操作,而不使用嵌套 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/