【发布时间】:2012-12-21 13:28:20
【问题描述】:
假设我有一个包含n 行和p 列的数据集,这样数据集中的每个条目都包含一个实数。我正在寻找一种方法来对每行中的 p 列进行排名。这个排名的输出应该是一个长度-p 的排名向量,它考虑了平局。
所以,假设我的数据集有 5 列。第一行可能类似于row 1 = {10, 13, 3, 3, -4}。我想对这一行执行一些操作,最后得到结果row 1 ranks = {3, 4, 2, 2, 1}。第二行可能类似于row 2 = {8, 3, -6, 5, 2},而这一行的结果应该是row 2 ranks = {5, 3, 1, 4, 2}。
此功能是否在 SAS 中实现?我生成了不考虑平局的代码,但它们经常出现,以至于要花费不合理的时间来纠正不正确的行排名。
【问题讨论】:
-
@itzy
proc rank在列中排名,而不是在行中。 -
@Joe 我有可用的 IML,但我不使用它。
-
我很好奇这个在你的编程中的最终用途。您打算如何使用它将驱动最终的非矩阵解决方案(即非 IML 或 R)......它可以通过创建一个仅具有排名的新数据集(就像 IML 将作为矩阵一样)轻松解决,或通过添加新变量(如 Bob 的解决方案),或通过添加带有等级的新行......即使是标准化结构也可能最适合结果数据的某些用途。
-
@Joe 最后我创建了一个新的数据集。对于上下文:我正在开展一个项目,使用均方误差比较不同条件下的各种方差估计量。我使用这些排名来制作视觉辅助工具。还要提一下,我并不反对使用 PROC IML,只是过去没有使用过。
标签: sas