如果我有一个矢量a = c(1300,NA,NA,NA,NA,1500,NA,NA,6000,NA,NA,900)
b=[2,NA,NA,NA,NA,3,NA,NA,4,NA,NA,5]
?
旁注:我试图让它们重复,所以它是
a=[1300,1300,1300,1300,1300,1500,1500,1500,6000,6000,6000,900]
但是当我使用排名时,它获得了一些疯狂的半数,任何想法?我最终想知道这一点。
保持数量之后的数量是非常重要的,所以我不能忽略它们
dplyr::dense_rank
函数的行为符合您的要求:
library(dplyr)
dense_rank(a)
# [1] 2 NA NA NA NA 3 NA NA 4 NA NA 1
它也适用于密集向量:
b = c(1300,1300,1300,1300,1300,1500,1500,1500,6000,6000,6000,900)
dense_rank(b)
# [1] 2 2 2 2 2 3 3 3 4 4 4 1
replace(a, !is.na(a), rank(a[!is.na(a)], ties.method = "first"))
# [1] 2 NA NA NA NA 3 NA NA 4 NA NA 1
拿a ^ is.na(a)
并乘以rank(a)
。我们使用ties="first"
来确保我们在每个指数上获得增加的值,而不是平均值。
rank(a, ties="first") * a ^ is.na(a)
# [1] 2 NA NA NA NA 3 NA NA 4 NA NA 1