【发布时间】:2014-09-04 03:27:19
【问题描述】:
我想知道我是否在这里遗漏了一些琐碎的事情:
当对这样一个包含 NAs 的向量进行排序时,有四种处理 NAs 的选项:
x<-c(5, NA, 3, NA, 6, 9, 10, NA, 5, 7, 12)
rank(x, na.last=T)
# [1] 2.5 9.0 1.0 10.0 4.0 6.0 7.0 11.0 2.5 5.0 8.0
rank(x, na.last=F)
# [1] 5.5 1.0 4.0 2.0 7.0 9.0 10.0 3.0 5.5 8.0 11.0
rank(x, na.last=NA)
# [1] 2.5 1.0 4.0 6.0 7.0 2.5 5.0 8.0
rank(x, na.last="keep")
# [1] 2.5 NA 1.0 NA 4.0 6.0 7.0 NA 2.5 5.0 8.0
我希望保留 NA 并对其进行排名。出于我的目的,它们应该被排在最后。在这种情况下,ties.method 可以用作默认的“平均值”。我正在寻找这个结果:
# [1] 2.5 10.0 1.0 10.0 4.0 6.0 7.0 10.0 2.5 5.0 8.0
来自 ?rank 帮助:“NA 值永远不会被认为是相等的:对于 na.last = TRUE 和 na.last = FALSE,它们按照它们在 x 中出现的顺序被赋予不同的等级。”
所以,这看起来像我想要的 - 即通过使用 rank 来平等对待他们并将他们的排名平均为最后排名是不可能的。这是真的吗 - 没有简单的方法可以通过排名完成这项工作吗?在执行rank(x, na.last="keep") 之后,我是否必须依靠第二行代码重新插入 NA 的等级?
【问题讨论】: