gpt4 book ai didi

对向量中的 NA 进行同等排序 [r]

转载 作者:行者123 更新时间:2023-12-04 11:39:06 27 4
gpt4 key购买 nike

我想知道我是否在这里遗漏了一些微不足道的东西:

在对这样的包含 NA 的向量进行排序时,有四种处理 NA 的选项:

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 的等级? ?

最佳答案

我不确定这是否是最优雅的解决方案,但您可以替换 NA 值,以便它们始终位于最后,如下所示:

rank( replace(x, is.na(x), max(x,na.rm=TRUE) + 1) )
#[1] 2.5 10.0 1.0 10.0 4.0 6.0 7.0 10.0 2.5 5.0 8.0

关于对向量中的 NA 进行同等排序 [r],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25656805/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com