r - 从数据框中计算相应的第 n 个百分位数
问题描述
OBS = data.frame(c(0.92, 1.00, 0.96, 0.87, 0.95))
OBS
0.92
1.00
0.96
0.87
0.95
REF = matrix(1:50, nrow=5, ncol=10)
REF
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 6 11 16 21 26 31 36 41 46
2 7 12 17 22 27 32 37 42 47
3 8 13 18 23 28 33 38 43 48
4 9 14 19 24 29 34 39 44 49
5 10 15 20 25 30 35 40 45 50
OBS 代表百分位数。我想搜索 REF 中的每一行并从 OBS 计算每一行的相应百分位数。例如,这意味着计算 REF 第一行的第 92 个百分位、REF 第二行的第 100 个百分位、REF 第三行的第 96 个百分位等。在这个简化的示例中,结果将是:
OUT
42.40
47.00
46.20
43.15
47.75
非常感谢任何建议。
解决方案
一个选项是遍历 的行序列matrix
,获取相应的“OBS”并使用quantile
unname(sapply(seq_len(nrow(REF)), function(i) quantile(REF[i, ], OBS[[1]][i])))
#[1] 42.40 47.00 46.20 43.15 47.75
另一种选择是rowQuantiles
从matrixStats
library(matrixStats)
diag(rowQuantiles(REF, probs = OBS[[1]]))
#[1] 42.40 47.00 46.20 43.15 47.75
推荐阅读
- jenkins - 如何更新 PR 合并提交的构建状态
- regex - 使用正则表达式在其他字符串之间查找字符串,直到换行
- c# - 根据所需的功能扩展多个/不同的对象?
- excel - 如何为 SAP 弹出窗口编写 SAP GUI SCRIPT
- android - 如何在谷歌地图 Android SDK 中的两个自定义 JSON mapStyles 之间切换
- python - 为什么 Python 代码会写出奇怪的东西?
- javascript - readyException.js:6 Uncaught TypeError:无法读取未定义的属性“mData”
- python - 在 Python 中使用 Matconvnet 模型或使其与 Python 兼容
- angular - 如何在导入中引用我的配置?
- javascript - 在 React 应用程序中初始化 PerfectScrollbar